[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
[1;33m*** Warning:[0;0m 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"
[1;31m*** ERROR:[0;0m 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