[ITP] python-license-expression and cygport PoC patch

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Thu Jul 4 02:18:45 GMT 2024


On 2024-06-23 14:12, Brian Inglis via Cygwin-apps wrote:
> On 2024-06-23 08:26, Jon Turney via Cygwin-apps wrote:
>> On 06/06/2024 20:03, Brian Inglis via Cygwin-apps wrote:
>>> I found github/nexB/license-expression Python package to do SPDX licence 
>>> checks developed by the same team doing SPDX-toolkit for SPDX, using the same 
>>> current data, by and working with Fedora folks et al.
>>
>> Thanks for taking a look at this problem.
>>
>> Having a package for this seems fine, but: this package is what calm uses, and 
>> still has the drawbacks I mentioned:
>>
>> * embeds the SPDX license data, doesn't dynamically fetch it
>> * can't really handle LicenseRef reasonably

> They appear to be looking at splitting the code and data packages, as the rules 
> appear to be settling down somewhat, whereas the data will only expand, and they 
> seem to want to make it easier to keep up the release cadence.

> Given the trapping problems you solved below, it should be possible in the SPDX 
> instantiation, to trap the unpackaged LicenseRef-* and ExceptionRef-* entries 
> and downgrade their reporting to warnings.

>>> Successful attempt to package Python license-expression (without tests):
>>>
>>>      https://cygwin.com/cgi-bin2/jobs.cgi?id=8210
>>>
>>> log at:
>>>
>>>      https://github.com/cygwin/scallywag/actions/runs/9293093201
>>>
>>> cygport attached and at:
>>>
>>> https://cygwin.com/cgit/cygwin-packages/playground/commit/?id=3626386b10c967f780547d1703ad23bd50f6331a
>>>
>>> The package installs and runs using PoC attached in 
>>> spdx-license-expression.py script hooked into 
>>> /usr/share/cygport/lib/pkg_pkg.cygpart license hint addition patch attached.

>> I'm not super-keen on adding a cygport dependency on python, just to do this 
>> check.
>>
>> It would probably be preferable to do this check initially after the .cygport 
>> is read, rather than only telling you about problems when you get around to 
>> doing to the package step.

> Add after the mandatory variables checks for LICENSE, etc.?
> Could be optional additional packages - install 
> python-SPDX-licen[cs]e-expression package which depends on 
> python-license-expression to do checks - cygport checks for SPDX and runs 
> licence checks only if present?

>>> I also ran a test of the Python script and module against all package source 
>>> cygport files declaring licences which I maintain or ever looked at, 
>>> including a git/cygwin-packages/*.cygport download from 2023-02, showing the 
>>> results in the attached log.
>>> I also attempted to trap the exceptions in the script, but that does not seem 
>>> to work in any documented obvious manner, but I do not know enough Python to 
>>> address this fully.
>>
>> Yeah, the way validate() handles parse errors is bizarre and unhelpful.
>>
>> What I ended up doing is calling parse() first to catch those errors, so 
>> something like:
>>
>>      try:
>>          licensing.parse(expression)
>>          errs = licensing.validate(expression).errors
>>      except (ExpressionError, ExpressionParseError) as e:
>>          print(e, file=sys.stderr)
>>          return 2
> 
> Thanks for that tip, I will have another look at calm, and see if I can work on 
> adding that, also checking for ...Refs, and warning or erroring (non-fatal) as 
> appropriate, in python-SPDX-license-expression.
> 
> Then another approach early in cygport to detect and check.

Hi Jon,

Adopted and incorporated your examples and requirements, and what calm does, so 
have an improved spdx-license-expression python script, which could be provided 
in a python-license-expression package, or packaged separately with just that 
file, plus a /bin/cygport patch which runs if LICENSE is defined and 
spdx-license-expression is available.

spdx-license-expression.py - added:
handle license-expression import failure
normalize expression whitespace
suppress warnings about LicenceRef-... and ExceptionRef-... licences

Tested LICENSE expressions from cygport files with:

$ spdx-license-expression-test.sh ... >& spdx-license-expression-test.log

then tested patched into cygport against all cygport files in my /usr/src/ tree 
including all last years git-cygwin-packages

$ spdx-license-expression-cygport-test.sh ... >& 
spdx-license-expression-cygport-test.log &

running cygport ...cygport vars LICENSE against ~3340 cygport files producing 
1.75MB of noisy logs over 6 hours zipped into ...test.log.xz, with significant 
results categorized in ...test-sum.log.xz for convenience.

[One issue I have with doing these global cygport tests is shown in that noisy 
log, where various perl, python, ruby, etc. issues prevent info or vars running 
because they don't like some config setting!
Some setting(s) should be available to switch off these tests or diagnostics 
while running things like info or vars, and I have tried by setting some in the 
...-cygport-test.sh script.]

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                 -- Antoine de Saint-Exupéry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spdx-license-expression.py
Type: text/x-python
Size: 2581 bytes
Desc: not available
URL: <https://cygwin.com/pipermail/cygwin-apps/attachments/20240703/fd0652ed/attachment-0001.py>
-------------- next part --------------
#!/bin/bash
# spdx-license-expression-test.sh - test all available cygport files

perl_cygport_no_error=cygport_no_error=1
python_wheel_versions=PYTHON_WHEEL_VERSIONS=3

export $perl_cygport_no_error $python_wheel_versions

# find cygport files with LICENSE
for cp in $(grep -l '^LICENSE=' "$@")
do
    # eval cygport vars to define LICENSE
    LICENSE=
    eval $(cygport $cp vars LICENSE 2>/dev/null)
    echo -n "$cp: "
    # check LICENSE
    if [ -n "$LICENSE" ]
    then
	${0%/*}/spdx-license-expression.py "$LICENSE"
    else	# find what's there and request it
	grep '^LICENSE=' $cp >&2
	cygport $cp vars LICENSE >&2
    fi
    rc=$?
    # record error
    [ $rc -ne 0 ] && echo "$cp: \$?=$rc" >&2
    echo
done

-------------- next part --------------
a2ps/a2ps.cygport: spdx-license-expression: GPL-3.0-or-later

bash-completion/bash-completion.cygport: spdx-license-expression: GPL-2.0-or-later

bash-completion/bash-completion-spec.cygport: spdx-license-expression: GPL-2.0-or-later

bind/bind.cygport: spdx-license-expression: MPL-2.0 AND ISC AND MIT AND BSD-3-Clause AND BSD-2-Clause

bison/bison.cygport: spdx-license-expression: GPL-3.0-or-later

calm/calm.cygport: spdx-license-expression: MIT

c-ares/c-ares.cygport: spdx-license-expression: MIT

coreutils/coreutils.cygport: spdx-license-expression: GPL-3.0-or-later AND GFDL-1.3-or-later

cpuid/cpuid.cygport: spdx-license-expression: GPL-2.0-or-later

cpuid/cpuid-spec-opensuse.cygport: spdx-license-expression: GPL-2.0-or-later

ctags/ctags.cygport: spdx-license-expression: GPL-2.0-or-later

curl/curl.cygport: spdx-license-expression: curl

curl/curl-spec-fedora.cygport: spdx-license-expression: MIT

curl/curl-spec-opensuse.cygport: spdx-license-expression: curl

curl/mingw64-i686-curl.cygport: spdx-license-expression: curl

curl/mingw64-x86_64-curl.cygport: spdx-license-expression: curl

cygwin/cygwin.cygport: spdx-license-expression: GPL-3.0-or-later

dash/dash.cygport: spdx-license-expression: BSD-3-Clause AND GPL-2.0-or-later

dateutils/dateutils.cygport: spdx-license-expression: BSD-3-Clause

dialog/dialog.cygport: spdx-license-expression: LGPL-2.1-only

diffstat/diffstat.cygport: spdx-license-expression: MIT-CMU

diffutils/diffutils.cygport: spdx-license-expression: GPL-3.0-or-later AND GFDL-1.3-or-later

expat/expat.cygport: spdx-license-expression: MIT

findutils/findutils.cygport: spdx-license-expression: GPL-3.0-or-later AND GFDL-1.3-or-later

fortune-mod/fortune-mod.cygport: spdx-license-expression: BSD-4-Clause

gawkextlib/gawkextlib.cygport: spdx-license-expression: GPL-3.0-or-later

gcl/gcl.cygport: spdx-license-expression: LGPL-2.0-or-later AND GPL-1.0-or-later AND MIT-Modern-Variant AND LOOP

gcl/gclisp.cygport: spdx-license-expression: GPL-1.0-or-later

GeoIP/GeoIP.cygport: spdx-license-expression: LGPL-2.1-or-later

GeoIP-database/GeoIP-database.cygport: spdx-license-expression: CC-BY-SA-4.0

getent/getent.cygport: spdx-license-expression: LGPL-2.1-or-later

gettext/gettext.cygport: spdx-license-expression: GPL-3.0-or-later AND LGPL-2.1-or-later AND GFDL-1.3-or-later AND MIT

gnutls/gnutls.cygport: spdx-license-expression: LGPL-2.1-or-later AND GPL-3.0-only AND GFDL-1.3-only

gpgme/gpgme.cygport: spdx-license-expression: GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT

grap/grap.cygport: spdx-license-expression: BSD-2-Clause

grep/grep.cygport: spdx-license-expression: GPL-2.0-or-later

groff/groff.cygport: spdx-license-expression: GPL-3.0-or-later

gsasl/gsasl.cygport: spdx-license-expression: LGPL-2.1-or-later AND GPL-3.0-or-later AND GFDL-1.3-or-later

gtk-doc/gtk-doc.cygport: spdx-license-expression: GPL-2.0-only AND GFDL-1.1-only

guile3.0/guile3.0.cygport: spdx-license-expression: GPL-3.0-only

gzip/gzip.cygport: spdx-license-expression: GPL-2.0-or-later

help2man/help2man.cygport: spdx-license-expression: GPL-3.0-or-later

htop/htop.cygport: spdx-license-expression: GPL-2.0-or-later

jq/jq.cygport: spdx-license-expression: MIT AND CC-BY-3.0 AND dtoa AND ICU

last-resort-font/last-resort-font.cygport: spdx-license-expression: OFL-1.1

lesspipe/lesspipe.cygport: spdx-license-expression: GPL-2.0-or-later

libevent/libevent.cygport: spdx-license-expression: BSD-3-Clause

libgcrypt/libgcrypt.cygport: spdx-license-expression: LGPL-2.1-or-later AND GPL-2.0-or-later AND (GPL-2.0-only OR BSD-3-Clause) AND BSD-3-Clause

libgpg-error/libgpg-error.cygport: spdx-license-expression: LGPL-2.1-or-later AND GPL-2.0-or-later

libidn/libidn.cygport: spdx-license-expression: LGPL-3.0-or-later AND GPL-2.0-or-later AND GPL-3.0-or-later AND GFDL-1.3-or-later

libidn2/libidn2.cygport: spdx-license-expression: LGPL-3.0-or-later AND GPL-2.0-or-later AND GPL-3.0-or-later AND Unicode-TOU AND Unicode-DFS-2016

libmetalink/libmetalink.cygport: spdx-license-expression: MIT

libpsl/libpsl.cygport: spdx-license-expression: MIT

libssh2/libssh2.cygport: spdx-license-expression: BSD-3-Clause

libunistring/libunistring.cygport: spdx-license-expression: (LGPL-3.0-or-later OR GPL-2.0-or-later) AND (GFDL-1.2-no-invariants-or-later OR GPL-3.0-or-later)

libvpx/libvpx.cygport: spdx-license-expression: BSD-3-Clause AND LicenseRef-Google-WebM-Additional-IP-Rights-Grant-Patents

libwebp/libwebp.cygport: spdx-license-expression: BSD-3-Clause AND LicenseRef-Google-WebM-Additional-IP-Rights-Grant-Patents

libxslt/libxslt.cygport: spdx-license-expression: MIT

m4/m4.cygport: spdx-license-expression: GPL-3.0-or-later

make/make.cygport: spdx-license-expression: GPL-3.0-only

mandoc/mandoc.cygport: spdx-license-expression: ISC

man-pages-linux/man-pages-linux.cygport: spdx-license-expression: MIT AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause-UC AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-var AND Linux-man-pages-copyleft-2-para AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-3.0-or-later WITH LGPL-3.0-linking-exception

man-pages-posix/man-pages-posix.cygport: spdx-license-expression: Linux-man-pages-copyleft

ncompress/ncompress.cygport: spdx-license-expression: Unlicense

ncurses/ncurses.cygport: spdx-license-expression: MIT

nghttp2/nghttp2.cygport: spdx-license-expression: MIT

nghttp3/nghttp3.cygport: spdx-license-expression: MIT

openssl/mingw64-i686-openssl.cygport: spdx-license-expression: OpenSSL

openssl/mingw64-x86_64-openssl.cygport: spdx-license-expression: OpenSSL

openssl/openssl.cygport: spdx-license-expression: OpenSSL

openssl/openssl1.0.cygport: spdx-license-expression: OpenSSL

openssl/openssl3.cygport: spdx-license-expression: Apache-2.0

patch/patch.cygport: spdx-license-expression: GPL-3.0-or-later

perl-App-XML-DocBook-Builder/perl-App-XML-DocBook-Builder.cygport: spdx-license-expression: MIT

procps-ng/procps-ng-4.0.2-1.cygport: spdx-license-expression: GPL-2.0-or-later AND LGPL-2.1-or-later

publicsuffix-list/publicsuffix-list.cygport: spdx-license-expression: MPL-2.0

python-license-expression/python-license-expression.cygport: spdx-license-expression: Apache-2.0

python-pytz/python-pytz.cygport: spdx-license-expression: MIT

readline/readline.cygport: spdx-license-expression: GPL-3.0-or-later

sed/sed.cygport: spdx-license-expression: GPL-2.0-or-later

tack/tack.cygport: spdx-license-expression: GPL-2.0-only

terminator/terminator.cygport: spdx-license-expression: GPL-2.0-only

unicode-ucd/unicode-ucd.cygport: spdx-license-expression: MIT

unifont/unifont.cygport: spdx-license-expression: (GPL-2.0-or-later WITH Font-exception-2.0 OR OFL-1.1) AND GPL-2.0-or-later AND LicenseRef-Unifoundry-Unifont-Public-Domain

units/units.cygport: spdx-license-expression: GPL-3.0-only AND GFDL-1.3-only

units/units-spec-opensuse.cygport: spdx-license-expression: GPL-3.0-or-later

unrar/unrar.cygport: spdx-license-expression: LicenseRef-RARlab-Unrar

vim/vim.cygport: spdx-license-expression: Vim

vim/vim9.cygport: spdx-license-expression: Vim AND LGPL-2.1-or-later AND MIT AND GPL-1.0-only AND (GPL-2.0-only OR Vim) AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-or-later AND GPL-3.0-or-later AND OPUBL-1.0

vttest/vttest.cygport: spdx-license-expression: BSD-Source-Code

vttest/vttest-spec-fedora.cygport: spdx-license-expression: MIT

wget/wget.cygport: spdx-license-expression: GPL-3.0-or-later

wget/wget-spec-opensuse.cygport: spdx-license-expression: GPL-3.0-or-later

wget2/wget2.cygport: spdx-license-expression: LGPL-3.0-or-later

wget2/wget2-spec-opensuse.cygport: spdx-license-expression: LGPL-3.0-or-later

xlsx2csv/xlsx2csv.cygport: spdx-license-expression: MIT



asr-manpages/asr-manpages.cygport: spdx-license-expression: Unknown license key(s): Authors
spdx-license-expression: Authors

ca-certificates/ca-certificates.cygport: spdx-license-expression: Unknown license key(s): Mozilla Public Licence 2.0
spdx-license-expression: Mozilla Public Licence 2.0

cpuid/cpuid-spec-fedora.cygport: spdx-license-expression: Unknown license key(s): GPLv2+
spdx-license-expression: GPLv2+

cygport/t.cygport: spdx-license-expression: Unknown license key(s): GPL
spdx-license-expression: GPL

fontconfig/fontconfig.cygport: spdx-license-expression: Invalid license key: the valid characters are: letters and numbers, underscore, dot, colon or hyphen signs and spaces: 'MIT/PD/UCD'
fontconfig/fontconfig.cygport: $?=2

funny-manpages/funny-manpages.cygport: spdx-license-expression: Unknown license key(s): Authors
spdx-license-expression: Authors

libhsts/libhsts.cygport: spdx-license-expression: parse errors: Invalid symbols sequence such as (A B) for token: "BSD-3-Clause" at position: 4
libhsts/libhsts.cygport: $?=2

num-utils/num-utils.cygport: spdx-license-expression: Unknown license key(s): GPL2+
spdx-license-expression: GPL2+

rman/rman.cygport: spdx-license-expression: Unknown license key(s): Artistic
spdx-license-expression: Artistic

scowl/scowl.cygport: spdx-license-expression: Unknown license key(s): Public Domain
spdx-license-expression: Public Domain AND BSD-3-Clause-Modification

tek4010/tek4010.cygport: spdx-license-expression: Unknown license key(s): GPL3
spdx-license-expression: GPL3

THE/the.cygport: spdx-license-expression: Unknown license key(s): GPL2
spdx-license-expression: GPL2

tnef/tnef.cygport: spdx-license-expression: Unknown license key(s): GPLv2
spdx-license-expression: GPLv2

txt2man/txt2man.cygport: spdx-license-expression: Unknown license key(s): GPLv2
spdx-license-expression: GPLv2

tzcode/tzcode.cygport: spdx-license-expression: Unknown license key(s): LicenceRef-IANA-TZ-Public-Domain
spdx-license-expression: LicenceRef-IANA-TZ-Public-Domain

tzcode/tzdata.cygport: spdx-license-expression: Unknown license key(s): LicenceRef-IANA-TZ-Public-Domain
spdx-license-expression: LicenceRef-IANA-TZ-Public-Domain

tzdata/tzcode.cygport: spdx-license-expression: Unknown license key(s): LicenceRef-IANA-TZ-Public-Domain
spdx-license-expression: LicenceRef-IANA-TZ-Public-Domain

tzdata/tzdata.cygport: spdx-license-expression: Unknown license key(s): LicenceRef-IANA-TZ-Public-Domain
spdx-license-expression: LicenceRef-IANA-TZ-Public-Domain

tzdata/tzdata-spec-fedora.cygport: LICENSE=Public Domain
/usr/src/tzdata/tzdata-spec-fedora.cygport: line 16: ftp://ftp.iana.org/tz/releases/tzcode.tar.gz: No such file or directory
/usr/src/tzdata/tzdata-spec-fedora.cygport: line 46: Domain: command not found
*** Warning: LICENSE not defined

tzdata/tzdata-spec-opensuse.cygport: spdx-license-expression: Unknown license key(s): GPL-2.0-with-classpath-exception
spdx-license-expression: GPL-2.0-with-classpath-exception

units/units-spec-fedora.cygport: spdx-license-expression: Unknown license key(s): GPLv3+
spdx-license-expression: GPLv3+

util-linux/util-linux.cygport: spdx-license-expression: Unknown license key(s): License-Ref-Public-Domain
spdx-license-expression: GPL-2.0-or-later AND GPL-2.0 AND GPL-3.0-or-later AND LGPL-2.1-or-later AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause-UC AND License-Ref-Public-Domain

wget/wget-spec-fedora.cygport: spdx-license-expression: Unknown license key(s): GPLv3+
spdx-license-expression: GPLv3+



git-cygwin-packages/alacarte.cygport: spdx-license-expression: LGPL-2.0-or-later

git-cygwin-packages/attr.cygport: spdx-license-expression: GPL-2.0-or-later AND LGPL-2.1-or-later

git-cygwin-packages/avahi.cygport: spdx-license-expression: LGPL-2.1-or-later

git-cygwin-packages/base-cygwin.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/calm.cygport: spdx-license-expression: MIT

git-cygwin-packages/cfitsio.cygport: spdx-license-expression: ISC

git-cygwin-packages/cpio.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/cpuid.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/csih.cygport: spdx-license-expression: LGPL-2.1-or-later AND BSD-2-Clause AND MIT

git-cygwin-packages/curl.cygport: spdx-license-expression: curl

git-cygwin-packages/cygrunsrv.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/cygwin.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/dash.cygport: spdx-license-expression: BSD-3-Clause AND GPL-2.0-or-later

git-cygwin-packages/diffstat.cygport: spdx-license-expression: MIT-CMU

git-cygwin-packages/diffutils.cygport: spdx-license-expression: GPL-3.0-or-later AND GFDL-1.3-or-later

git-cygwin-packages/dmalloc.cygport: spdx-license-expression: ISC

git-cygwin-packages/double-conversion.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/doxygen.cygport: spdx-license-expression: GPL-2.0-only

git-cygwin-packages/duplicity.cygport: spdx-license-expression: GPL-2.0-only

git-cygwin-packages/editrights.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/exiv2.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/extractpdfmark.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/file.cygport: spdx-license-expression: BSD-2-Clause

git-cygwin-packages/fish.cygport: spdx-license-expression: GPL-2.0-only AND LGPL-2.0-only AND ISC AND BSD-2-Clause

git-cygwin-packages/fortune-mod.cygport: spdx-license-expression: BSD-4-Clause

git-cygwin-packages/freeglut.cygport: spdx-license-expression: MIT

git-cygwin-packages/gawk.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/getent.cygport: spdx-license-expression: LGPL-2.1-or-later

git-cygwin-packages/gettext.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/ghostscript.cygport: spdx-license-expression: AGPL-3.0-or-later

git-cygwin-packages/gnuplot.cygport: spdx-license-expression: gnuplot

git-cygwin-packages/gobject-introspection.cygport: spdx-license-expression: GPL-2.0-or-later AND LGPL-2.0-or-later AND MIT

git-cygwin-packages/grep.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/harfbuzz.cygport: spdx-license-expression: MIT

git-cygwin-packages/help2man.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/icu.cygport: spdx-license-expression: Unicode-DFS-2016

git-cygwin-packages/ipc-utils.cygport: spdx-license-expression: BSD-3-Clause AND BSD-4-Clause

git-cygwin-packages/lftp.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/libcbor.cygport: spdx-license-expression: MIT

git-cygwin-packages/libcerf.cygport: spdx-license-expression: MIT

git-cygwin-packages/libdeflate.cygport: spdx-license-expression: MIT

git-cygwin-packages/libedit.cygport: spdx-license-expression: BSD-3-Clause AND BSD-2-Clause AND ISC

git-cygwin-packages/libffi.cygport: spdx-license-expression: MIT

git-cygwin-packages/libfido2.cygport: spdx-license-expression: BSD-2-Clause

git-cygwin-packages/libidn2.cygport: spdx-license-expression: LGPL-3.0-or-later AND GPL-2.0-or-later AND GPL-3.0-or-later AND Unicode-TOU AND Unicode-DFS-2016

git-cygwin-packages/libjpeg-turbo.cygport: spdx-license-expression: IJG AND BSD-3-Clause AND Zlib

git-cygwin-packages/libmetalink.cygport: spdx-license-expression: MIT

git-cygwin-packages/libpsl.cygport: spdx-license-expression: MIT

git-cygwin-packages/libsolv.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/libspectre.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/libssh2.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/libuninameslist.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/lighttpd.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/lua-lxp.cygport: spdx-license-expression: MIT

git-cygwin-packages/man-db.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/man-pages-linux.cygport: spdx-license-expression: Linux-man-pages-copyleft

git-cygwin-packages/meson.cygport: spdx-license-expression: Apache-2.0

git-cygwin-packages/mingw64-i686-gettext.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/mingw64-i686-libidn2.cygport: spdx-license-expression: LGPL-3.0-or-later AND GPL-2.0-or-later AND GPL-3.0-or-later AND Unicode-TOU AND Unicode-DFS-2016

git-cygwin-packages/mingw64-i686-libsolv.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/mingw64-i686-libssh2.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/mingw64-i686-nghttp2.cygport: spdx-license-expression: MIT

git-cygwin-packages/mingw64-x86_64-curl.cygport: spdx-license-expression: curl

git-cygwin-packages/mingw64-x86_64-gettext.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/mingw64-x86_64-libidn2.cygport: spdx-license-expression: LGPL-3.0-or-later AND GPL-2.0-or-later AND GPL-3.0-or-later AND Unicode-TOU AND Unicode-DFS-2016

git-cygwin-packages/mingw64-x86_64-libsolv.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/mingw64-x86_64-libssh2.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/mingw64-x86_64-nghttp2.cygport: spdx-license-expression: MIT

git-cygwin-packages/minisign.cygport: spdx-license-expression: ISC

git-cygwin-packages/mosh.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/mpfr.cygport: spdx-license-expression: LGPL-3.0-or-later

git-cygwin-packages/mt.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/nghttp2.cygport: spdx-license-expression: MIT

git-cygwin-packages/ninja.cygport: spdx-license-expression: Apache-2.0

git-cygwin-packages/ocaml.cygport: spdx-license-expression: LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception

git-cygwin-packages/openldap.cygport: spdx-license-expression: OLDAP-2.8

git-cygwin-packages/openssh.cygport: spdx-license-expression: BSD-2-Clause

git-cygwin-packages/openssl.cygport: spdx-license-expression: OpenSSL

git-cygwin-packages/osslsigncode.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/passwdqc.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/patch.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/perl-Alien-Build.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-App-XML-DocBook-Builder.cygport: spdx-license-expression: MIT

git-cygwin-packages/perl-B-COW.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Clone.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-DateTime.cygport: spdx-license-expression: Artistic-2.0

git-cygwin-packages/perl-DateTime-Locale.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-DateTime-TimeZone.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-DBD-SQLite.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-HTML-Parser.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-HTTP-Message.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Image-ExifTool.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-IO-Socket-SSL.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-IO-Tty.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Log-Log4perl.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Mojolicious.cygport: spdx-license-expression: Artistic-2.0

git-cygwin-packages/perl-Params-Validate.cygport: spdx-license-expression: Artistic-2.0

git-cygwin-packages/perl-Path-Tiny.cygport: spdx-license-expression: Apache-2.0

git-cygwin-packages/perl-PerlIO-utf8_strict.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-String-Util.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Term-ReadLine-Gnu.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Test-Needs.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Test-Simple.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Text-BibTeX.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-URI.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-XML-LibXSLT.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-YAML-LibYAML.cygport: spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/pl.cygport: spdx-license-expression: BSD-2-Clause

git-cygwin-packages/procps-ng.cygport: spdx-license-expression: GPL-2.0-or-later AND LGPL-2.1-or-later

git-cygwin-packages/protobuf.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/psmisc.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/publicsuffix-list.cygport: spdx-license-expression: MPL-2.0

git-cygwin-packages/readline.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/rlwrap.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/rng-tools.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/rsync.cygport: spdx-license-expression: GPL-3.0-or-later

git-cygwin-packages/schroedinger-coordgenlibs.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/schroedinger-maeparser.cygport: spdx-license-expression: MIT

git-cygwin-packages/screen.cygport: spdx-license-expression: GPL-3.0-only

git-cygwin-packages/stunnel.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/tack.cygport: spdx-license-expression: GPL-2.0-only

git-cygwin-packages/tcsh.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/texinfo.cygport: spdx-license-expression: GPL-3.0-only

git-cygwin-packages/tiff.cygport: spdx-license-expression: libtiff

git-cygwin-packages/tin.cygport: spdx-license-expression: BSD-3-Clause

git-cygwin-packages/tree-sitter.cygport: spdx-license-expression: MIT

git-cygwin-packages/unison.cygport: spdx-license-expression: GPL-3.0-only

git-cygwin-packages/upx.cygport: spdx-license-expression: GPL-2.0-or-later

git-cygwin-packages/vttest.cygport: spdx-license-expression: BSD-Source-Code

git-cygwin-packages/windows-default-manifest.cygport: spdx-license-expression: FSFAP

git-cygwin-packages/xcb-util-cursor.cygport: spdx-license-expression: MIT

git-cygwin-packages/xcb-util-errors.cygport: spdx-license-expression: MIT

git-cygwin-packages/xcb-util-image.cygport: spdx-license-expression: MIT

git-cygwin-packages/xcb-util-keysyms.cygport: spdx-license-expression: MIT

git-cygwin-packages/xcb-util-renderutil.cygport: spdx-license-expression: MIT

git-cygwin-packages/xcb-util-wm.cygport: spdx-license-expression: MIT

git-cygwin-packages/xkeyboard-config.cygport: spdx-license-expression: MIT

git-cygwin-packages/xorg-server.cygport: spdx-license-expression: MIT

git-cygwin-packages/xz.cygport: spdx-license-expression: GPL-2.0-or-later AND LGPL-2.1-or-later

git-cygwin-packages/zlib.cygport: spdx-license-expression: Zlib

git-cygwin-packages/zstd.cygport: spdx-license-expression: BSD-3-Clause AND GPL-2.0-only

git-cygwin-packages/zziplib.cygport: spdx-license-expression: LGPL-2.0-only OR MPL-1.1



git-cygwin-packages/bison.cygport: spdx-license-expression: Unknown license key(s): GPLv3+
spdx-license-expression: GPLv3+

git-cygwin-packages/buildbot-worker.cygport: spdx-license-expression: Invalid license key: the valid characters are: letters and numbers, underscore, dot, colon or hyphen signs and spaces: 'GNU General Public License, Version 2'
git-cygwin-packages/buildbot-worker.cygport: $?=2

git-cygwin-packages/dialog.cygport: spdx-license-expression: 'LGPL-2.1' normalizes to 'LGPL-2.1-only'
spdx-license-expression: LGPL-2.1-only

git-cygwin-packages/gzip.cygport: spdx-license-expression: Unknown license key(s): GPLv2+
spdx-license-expression: GPLv2+

git-cygwin-packages/khronos-opengl-registry.cygport: spdx-license-expression: Unknown license key(s): SGI Free Software License B
spdx-license-expression: SGI Free Software License B

git-cygwin-packages/libgcrypt.cygport: spdx-license-expression: Invalid license key: the valid characters are: letters and numbers, underscore, dot, colon or hyphen signs and spaces: 'LGPLv2.1+/GPLv2+'
git-cygwin-packages/libgcrypt.cygport: $?=2

git-cygwin-packages/libidn.cygport: spdx-license-expression: Invalid license key: the valid characters are: letters and numbers, underscore, dot, colon or hyphen signs and spaces: 'LGPLv3+/GPLv2+/GPLv3+/GFDLv1.3+'
git-cygwin-packages/libidn.cygport: $?=2

git-cygwin-packages/libwebp.cygport: spdx-license-expression: parse errors: A plain license symbol cannot be used as an exception in a "WITH symbol" statement. for token: "LicenseRef-Google-WebM-Additional-IP-Rights-Grant-Patents" at position: 18
git-cygwin-packages/libwebp.cygport: $?=2

git-cygwin-packages/lz4.cygport: spdx-license-expression: 'BSD-2-Clause AND GPL-2.0' normalizes to 'BSD-2-Clause AND GPL-2.0-only'
spdx-license-expression: BSD-2-Clause AND GPL-2.0-only

git-cygwin-packages/m4.cygport: spdx-license-expression: Unknown license key(s): GPLv3+
spdx-license-expression: GPLv3+

git-cygwin-packages/man-pages-posix.cygport: spdx-license-expression: Unknown license key(s): MIT-like
spdx-license-expression: MIT-like

git-cygwin-packages/maxima.cygport: spdx-license-expression: Unknown license key(s): GPLv2+
spdx-license-expression: GPLv2+

git-cygwin-packages/mingw64-i686-curl.cygport: spdx-license-expression: Unknown license key(s): MIT-like
spdx-license-expression: MIT-like

git-cygwin-packages/mingw64-i686-lz4.cygport: spdx-license-expression: 'BSD-2-Clause AND GPL-2.0' normalizes to 'BSD-2-Clause AND GPL-2.0-only'
spdx-license-expression: BSD-2-Clause AND GPL-2.0-only

git-cygwin-packages/mingw64-x86_64-lz4.cygport: spdx-license-expression: 'BSD-2-Clause AND GPL-2.0' normalizes to 'BSD-2-Clause AND GPL-2.0-only'
spdx-license-expression: BSD-2-Clause AND GPL-2.0-only

git-cygwin-packages/net-snmp.cygport: spdx-license-expression: Unknown license key(s): BSD
spdx-license-expression: BSD

git-cygwin-packages/perl-Exporter-Tiny.cygport: spdx-license-expression: '(Artistic-1.0-Perl OR GPL-1.0-or-later)' normalizes to 'Artistic-1.0-Perl OR GPL-1.0-or-later'
spdx-license-expression: Artistic-1.0-Perl OR GPL-1.0-or-later

git-cygwin-packages/perl-Mozilla-CA.cygport: spdx-license-expression: Unknown license key(s): unknownORunknown
spdx-license-expression: unknownORunknown

git-cygwin-packages/picocom.cygport: spdx-license-expression: 'GPL-2.0' normalizes to 'GPL-2.0-only'
spdx-license-expression: GPL-2.0-only

git-cygwin-packages/python-future.cygport: LICENSE="MIT License"
*** ERROR: 2.7 in PYTHON_WHEEL_VERSIONS
git-cygwin-packages/python-future.cygport: $?=1

git-cygwin-packages/recode.cygport: spdx-license-expression: Unknown license key(s): BSD, OFSFDL
spdx-license-expression: GPL-3.0-or-later AND LGPL-3.0-or-later AND BSD AND OFSFDL

git-cygwin-packages/scowl.cygport: spdx-license-expression: Invalid license key: the valid characters are: letters and numbers, underscore, dot, colon or hyphen signs and spaces: 'PD/BSD-3-Mod'
git-cygwin-packages/scowl.cygport: $?=2

git-cygwin-packages/sed.cygport: spdx-license-expression: Unknown license key(s): GPLv2+
spdx-license-expression: GPLv2+

git-cygwin-packages/tzcode.cygport: spdx-license-expression: Unknown license key(s): Public-Domain
spdx-license-expression: Public-Domain

git-cygwin-packages/tzdata.cygport: spdx-license-expression: Unknown license key(s): Public-Domain
spdx-license-expression: Public-Domain

git-cygwin-packages/units.cygport: spdx-license-expression: Unknown license key(s): GPL
spdx-license-expression: GPL

git-cygwin-packages/wget.cygport: spdx-license-expression: Unknown license key(s): GPLv3+
spdx-license-expression: GPLv3+

git-cygwin-packages/xview.cygport: spdx-license-expression: Unknown license key(s): Sun OpenLook
spdx-license-expression: Sun OpenLook

-------------- next part --------------
--- origsrc/lib/pkg_info.cygpart.orig	2024-05-06 07:10:53.000000000 -0600
+++ src/lib/pkg_info.cygpart	2024-07-01 16:12:45.802851300 -0600
@@ -47,16 +47,21 @@ __pager() {
 #  DESCRIPTION
 #  A SPDX license expression (See https://spdx.dev/ids/) for the license(s) of
 #  the package.
+#  If program spdx-license-expression (in package python-license-expression)
+#  is available, it will be used to validate the SPDX license expression, and
+#  issue diagnostic messages on stderr if there are any issues.
 #****
 
 __show_info() {
+	local ll_nl='          ' indent=22	# long licences get a new line
+	[ ${#LICENSE} -gt $((${COLUMNS:-80} - $indent)) ] && ll_nl=$'\n'
 	__pager <<-_EOF
 	Cygport package information
 	    Package name:     ${PN}
 	    Package version:  ${PV}
 	    Cygwin release:   ${PR}
 	    Homepage:         ${HOMEPAGE}
-	    License:          ${LICENSE}
+	    License:${ll_nl:-          }${LICENSE//$'\t'/ }
 	    Summary:          ${SUMMARY:-${DESCRIPTION}}
 	    Description:
 ${DESCRIPTION:-${SUMMARY}}
-------------- next part --------------
#!/bin/bash
# spdx-license-expression-cygport-test.sh - test all available cygport files

perl_cygport_no_error=cygport_no_error=1
python_wheel_versions=PYTHON_WHEEL_VERSIONS=3

export $perl_cygport_no_error $python_wheel_versions

# cygport files
for cp
do
    echo -n "$cp: "
    cygport $cp vars LICENSE
    rc=$?
    # record error
    [ $rc -ne 0 ] && echo "$cp: \$?=$rc" >&2
    echo
done 2>&1 | grep -v							    \
    -e '\*\*\*\sWarning:.*\sBuilding\son\sa\scase-insensitive\sfilesystem'  \
    -e '\*\*\*\sInfo:.*\sTrying\sto\senable\scase\ssensitivity\son\s'	    \
    -e '\*\*\*\sInfo:.*\sBuilding\snative\stoolchain\sfor\s'		    \
    -e '\*\*\*\sWarning:.*\s[^.]\+\.cygclass:\sdeprecated\scompatibility\swrapper\sfor\s'
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spdx-license-expression-cygport-test-sum.log.xz
Type: application/octet-stream
Size: 28412 bytes
Desc: not available
URL: <https://cygwin.com/pipermail/cygwin-apps/attachments/20240703/fd0652ed/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spdx-license-expression-cygport-test.log.xz
Type: application/octet-stream
Size: 46584 bytes
Desc: not available
URL: <https://cygwin.com/pipermail/cygwin-apps/attachments/20240703/fd0652ed/attachment-0003.obj>


More information about the Cygwin-apps mailing list