Review: golang-github-google-licensecheck 0.3.1+ds-1
Package Information
| Description | classify license files against known open source licenses (library) The licensecheck package scans source texts for known licenses and reports how closely they match. Its design goal is never to produce a false positive. It also recognises matches of known license URLs. The scanner recognises nearly all the licenses gathered by the SPDX project along with a number of others, using pattern definitions written in an internal License Regular Expression (LRE) syntax. |
|---|---|
| Maintainer | Debian Go Packaging Team <team+pkg-go@tracker.debian.org> |
| Changed By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Sponsor | tsimonq2@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/go-team/packages/golang-github-google-licensecheck.git (browse) |
| Closes | #1148631 |
| Tracker | https://tracker.debian.org/pkg/golang-github-google-licensecheck |
| Uploaded | 7 hours ago |
New Package Report
.changes
| Date | Tue, 22 Sep 2026 03:47:08 +0200 |
|---|---|
| Source | golang-github-google-licensecheck |
| Version | 0.3.1+ds-1 |
| Changed-By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Architecture | source all |
| Distribution | unstable |
Changelog
golang-github-google-licensecheck (0.3.1+ds-1) unstable; urgency=medium . * Initial release (Closes: #1148631)
.dsc
| Component | main |
|---|---|
| Package-List | golang-github-google-licensecheck-dev deb golang optional arch=all |
| Section | golang |
| Priority | optional |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Source: https://github.com/google/licensecheck Upstream-Name: licensecheck Upstream-Contact: https://github.com/google/licensecheck/issues Files-Excluded: testdata old/testdata Comment: The excluded directories are detector test corpora: each file is a sample text that the scanner is expected to classify as a given licence. Some are verbatim copies of licences Debian treats as non-free, notably the JSON licence with its "shall be used for Good, not Evil" clause (testdata/JSON.t1, old/testdata/JSON.t1) and GFDL 1.1 texts carrying invariant sections (GFDL-1.1.t2 through t4 in both directories). They are inputs to the test suite, not content this package is licensed under, but they are non-free texts and are therefore removed from the source tarball. The tests that read them are skipped; see debian/rules. Files: * Copyright: 2019 The Go Authors License: BSD-3-clause Comment: The LICENSE names The Go Authors, not Google, despite the repository living under the google organisation. Files: debian/* Copyright: 2026 Juan Manuel Méndez Rey <juan.mendezr@proton.me> License: BSD-3-clause Comment: Debian packaging is licensed under the same terms as upstream License: BSD-3-clause All rights reserved. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the developer(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DFSG Assistant LLM REVIEW 0 blocker, 0 important, 1 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 5 hours ago.
Report
DFSG NEW review for golang-github-google-licensecheck version 0.3.1+ds-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: Yes - Packaging is of good quality: Yes
- Issues: 0 blocker, 0 important, 1 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: 209 found (53 not listed by the scan, so not checked)
Licensing
DFSG-free, and debian/copyright describes the tree correctly apart from one wording nit. Everything outside debian/ is upstream's work: every Go source carries // Copyright 2019/2020 The Go Authors ... BSD-style, the repo LICENSE is BSD-3-clause (Copyright 2019 The Go Authors), and Files: * matches it; Files: debian/* covers the packaging, by the uploader. The non-free wording the scan found (CC-BY-NC/ND, the JSON 'Good, not Evil' clause, CAL-1.0, SSPL, Commons Clause, LPPL/LGPLLR, the AFL/OSL 'no trademark rights' paragraphs) occurs only inside licenses/*.lre and the data generated from them: those files are the scanner's licence-detection patterns, so the text is the licence each pattern recognises, not the licence of the file. The non-free licence texts that such a check really objects to were removed from the tarball (testdata/ and old/testdata/ are absent and named in Files-Excluded), and no generated-but-sourceless artefact is shipped: data.gen.go is generated from licenses/*.lre by the gen_data.go that is in the tree. Answer 'yes' with one minor exception: the stand-alone License: BSD-3-clause paragraph (debian/copyright:40) paraphrases clause 3 of LICENSE as 'the developer(s)' where the licence itself names 'Google Inc.' — same licence and same obligations, but the notice is not reproduced as given.
Packaging
Clean, small, modern packaging I would sponsor as it stands: debhelper compat 14 with dh-go (which exists in the archive and conflicted out dh-golang, so the lintian override is right), dpkg-build-api (= 1) giving R³: no and the full debian/rules target set, source format 3.0 (quilt), Standards-Version 4.7.4 against current Policy 4.7.4.1, a single Architecture: all library package with Multi-Arch: foreign as the Go team ships Go -dev packages, consistent Vcs-*/Homepage/XS-Go-Import-Path and debian/upstream/metadata, a justified debian/source/lintian-overrides, salsa CI, and debian/lrc.config is a legitimate licenserecon suppression file rather than clutter. The legacy old/ copy is kept out of both the build and the installed gocode tree (DH_GOLANG_EXCLUDES := old); because the test corpora were removed, the build-time tests are narrowed to -run 'TestScan|TestType|TestURL', which is defensible and explained in debian/rules, though it means TestTestdata, the actual corpus test, never runs (and the TestScan alternative matches no test in this tree). No packaging issue found; the only open question, the autopkgtest helper's build directory, is under Not confirmed.
Issues
1. [minor] [licensing] debian/copyright's stand-alone BSD-3-clause text paraphrases clause 3 ('the developer(s)') instead of reproducing LICENSE's 'Google Inc.'
- Files:
debian/copyright:40,LICENSE:13 - Basis: checked, in the package or with a reference tool
- Evidence: debian/copyright:40
* Neither the name of the developer(s) nor the names of itsvs LICENSE:13* Neither the name of Google Inc. nor the names of its - Problem: The stand-alone
License: BSD-3-clauseparagraph is the licence text of the package, and clause 3 of it is operative: it says whose name may not be used for endorsement. The file substitutes a generic 'the developer(s)' for the holder the licence names, so the notice as given by the copyright holder is not reproduced (Policy 12.5); the same paragraph is the text for both the upstream and the debian/* stanzas. It is still recognisably BSD-3-Clause and nothing about the DFSG status of the package turns on this. - Fix: Paste the clause verbatim from LICENSE:
* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.(theFiles: *Comment already explains that the copyright line says The Go Authors while clause 3 names Google Inc.).
Verified
- Whole tree inventoried, .pc/ aside: root 13 files, internal/match/ 9, old/ 9, licenses/ 405, debian/ 13 (changelog, control, copyright, gbp.conf, lrc.config, rules, salsa-ci.yml, watch, source/format, source/lintian-overrides, upstream/metadata). No
testdata/orold/testdata/anywhere, soFiles-Excluded: testdata / old/testdatamatches the tree. - Every Go file outside licenses/ carries
// Copyright 2019 The Go Authors ... BSD-style(license.go, scan.go, urls.go, gen_data.go, license_test.go, type_test.go, url_test.go, internal/match/.go, old/.go); licenses/getspdx.go and licenses/getcc.go carry// Copyright 2020 The Go Authors. Years 2019/2020 underCopyright: 2019 The Go Authorsare not a discrepancy. - licenses/ is a directory of licence-detection patterns, one per licence the scanner recognises. Each file the scan lists — licenses/AFL-2.0.lre, licenses/AFL-2.1.lre, licenses/AFL-3.0.lre, licenses/AMPAS.lre, licenses/APL-1.0.lre, licenses/APSL-1.2.lre, licenses/APSL-2.0.lre, licenses/Aladdin-9.lre, licenses/Aladdin.lre, licenses/BSD-Protection.lre, licenses/BSD.lre, licenses/Barr.lre, licenses/BitTorrent-1.0.lre, licenses/BitTorrent-1.1.lre, licenses/CAL-1.0.lre, licenses/CATOSL-1.1.lre, licenses/CC-BY-1.0.lre, licenses/CC-BY-2.0.lre, licenses/CC-BY-2.5.lre, licenses/CC-BY-NC-1.0.lre, licenses/CC-BY-NC-2.0.lre, licenses/CC-BY-NC-2.5.lre, licenses/CC-BY-NC-3.0.lre, licenses/CC-BY-NC-4.0.lre, licenses/CC-BY-NC-ND-1.0.lre, licenses/CC-BY-NC-ND-2.0.lre, licenses/CC-BY-NC-ND-2.5.lre, licenses/CC-BY-NC-ND-3.0-IGO.lre, licenses/CC-BY-NC-ND-3.0.lre, licenses/CC-BY-NC-ND-4.0.lre, licenses/CC-BY-NC-SA-1.0.lre, licenses/CC-BY-NC-SA-2.0.lre, licenses/CC-BY-NC-SA-2.5.lre, licenses/CC-BY-NC-SA-3.0-US.lre, licenses/CC-BY-NC-SA-3.0.lre, licenses/CC-BY-NC-SA-4.0.lre, licenses/CC-BY-ND-1.0.lre, licenses/CC-BY-ND-2.0.lre, licenses/CC-BY-ND-2.5.lre, licenses/CC-BY-ND-3.0.lre, licenses/CC-BY-ND-4.0.lre, licenses/CC-BY-SA-1.0.lre, licenses/CC-BY-SA-2.0.lre, licenses/CC-BY-SA-2.5.lre, licenses/CC-PDDC.lre, licenses/CDLA-Sharing-1.0.lre, licenses/CERN-OHL-1.1.lre, licenses/CERN-OHL-1.2.lre, licenses/CERN-OHL-P-2.0.lre, licenses/CERN-OHL-S-2.0.lre, licenses/CERN-OHL-W-2.0.lre, licenses/CPOL-1.02.lre, licenses/Condor-1.1.lre, licenses/DOC.lre, licenses/EUDatagrid.lre, licenses/GFDL-1.1.lre, licenses/IJG.lre, licenses/IPA.lre, licenses/JSON.lre, licenses/LGPLLR.lre, licenses/LPPL-1.0.lre, licenses/LPPL-1.1.lre, licenses/LPPL-1.2.lre, licenses/Leptonica.lre, licenses/Motosoto.lre, licenses/NCGL-UK-2.0.lre, licenses/NGPL.lre, licenses/NPOSL-3.0.lre, licenses/Noweb.lre, licenses/OCLC-2.0.lre, licenses/OSL-1.0.lre, licenses/OSL-1.1.lre, licenses/OSL-2.0.lre, licenses/OSL-2.1.lre, licenses/OSL-3.0.lre, licenses/Sleepycat.lre — opens with a comment naming the licence it detects plus that licence's SPDX/OSI links, and then reproduces that licence's text with LRE markup, e.g. licenses/JSON.lre lines 1-4 followed by the JSON text with
((shall || should rather)), licenses/CAL-1.0.lre lines 1-6, licenses/Sleepycat.lre lines 1-5, licenses/Aladdin.lre's 'non-commercial media' paragraph, licenses/AFL-3.0.lre's patent paragraph, licenses/APSL-1.2.lre's Personal Use definition. That is a description of a licence, not a grant under it: none of these files is licensed by the licence it recognises, and all of them are upstream's own BSD-3-clause work covered byFiles: *. - data.gen.go (3.3 MB) begins
// Code generated by gen_data.go; DO NOT EDIT.; its generator gen_data.go is in the tree (invoked by the go:generate comment in license.go) and its inputs are licenses/*.lre, so it is a generated file whose generator input ships. The lines the scan quotes in it (data.gen.go:78-80 CC-BY-NC IDs, data.gen.go:10934/10940 CAL-1.0, data.gen.go:608/1069/1288) are the embedded pattern texts. - old/data.gen.go — the one text file over 4 MiB, which the scan could only read in part — is the same kind of file for the legacy v0.1.0 copy under old/ (
// Code generated by gen_data.go; DO NOT EDIT., plain licence texts such aslicense_AGPL_3_0and LRE text such as the CAL-1.0 lines at old/data.gen.go:23060/23066). old/ is excluded from build and install byDH_GOLANG_EXCLUDES := old(debian/rules:6; DH_GOLANG_EXCLUDES_ALL defaults true at compat >= 12), so it does not reach the binary package. - debian/lrc.config is licenserecon's per-package suppression file, not a stray artifact: /usr/share/doc/licenserecon/ReadMe.en documents
debian/lrc.configfor suppressing false positives; its lines are .lre file names, and the licence names at lrc.config:84-86 (CC-BY-NC-, CC-BY-NC-ND-) are such file names. - license.go:145-147 is package documentation of the scanner's license-type classification ('NonCommercial indicates that commercial use of the software is disallowed ... CommonsClause, CC-BY-NC-4.0, Prosperity 3.0.0'); it describes a license type, not a term of licensecheck's own licence.
- debian/copyright:11 is inside the Comment of the
Files-Excludedheader, explaining that the removed corpora contained the JSON licence text and GFDL-1.1-with-invariants texts. - The 64 holders the author check lists are holders named by the licences being recognised, not holders of this package: they appear inside the licence texts/templates of licenses/ and data.gen.go (Free Software Foundation, Affero Inc, Amazon Digital Services, Apple/Apple Computer Inc, BULL/Bull SAS, Cambridge Broadband, Carnegie Mellon, Cisco, Condor Team, David Turner, Eric Young, Ericsson Utvecklings AB, Glenn Randers-Pehrson, Guy Eric Schalnat, Hans-Hermann Bode, Henry Spencer, iMatix, Julian Seward, Lawrence Rosen, Lucent, MIT and Honeywell, MongoDB, Netscape, Networks Associates, Nigel Tzeng, Proofpoint, Red Hat, Richard M. Stallman, Rob Braun, Robert A. van Engelen, ScienceLogic, Sendmail, OCLC/OCLC Online Computer Library, Andreas Digger, Charlie Poole, Gerd Neugebauer) or are test strings ('Gopher(R) copyright' at internal/match/dict_test.go:145-147, and old/normalize_test.go's embedded Apache-2.0 text). None is a missing copyright holder of the package.
- debian/copyright is DEP-5 with the correct
Format:URL,Files-Excludedin the header, aFiles: *stanza, a laterFiles: debian/*stanza for the packaging, and a stand-alone paragraph for each short name used;*patterns reach into subdirectories, soFiles: *covers the whole tree. No replacement file is needed. - Build-Depends named in debian/control resolve: dh-go 1.69 (Debian Go Packaging Team, Conflicts: dh-golang) provides the
golangsequence addon, the golang buildsystem and dh_golang, as debian/control and debian/source/lintian-overrides say; golang-any is provided by golang-defaults;dpkg-build-api (= 1)is the form dpkg-build-api(7) documents, provided by dpkg-dev 1.23.11. - Standards-Version 4.7.4 against Policy 4.7.4.1 (the current version per the policy tool): first two components match, not an issue.
Depends: ${misc:Depends},in debian/control is not a broken field: with the substvar empty the field becomes empty and dpkg-gencontrol deletes it ('# Delete empty field. delete $fields->{$field} unless $fields->{$field};', /usr/bin/dpkg-gencontrol), and at compat 14 dh_gencontrol adds relationship substvars itself anyway.dist = DEP14in debian/gbp.conf is a valid git-buildpackage setting (gbp/scripts/buildpackage.py:212 handlesoptions.pbuilder_dist == 'DEP-14' or 'DEP14').- The autopkgtest runs the package's own debian/rules: autodep8's go generator emits
Test-Command: /usr/bin/dh_golang_autopkgtest, and that script copies the source tree and runsmake -f debian/rules build, so theoverride_dh_auto_testfilter applies in autopkgtest too. - Coverage: debian/ read in full; the tree listed in full; all hand-written sources read; the two generated data files sampled at their heads and at the lines the scan named rather than line by line. No images, fonts, archives, .so/.jar/.class/.pyc or other binary files in the tree.
- uscan found the packaged version as the newest upstream release (upstream
0.3.1, packaged0.3.1+ds).
Not confirmed
- autopkgtest build directory: the generated test runs /usr/bin/dh_golang_autopkgtest, which (in the dh-golang copy installed here, the only copy I could read — the package Build-Depends on dh-go, which is not installed) computes the Go build directory itself as
_buildand adds its own override_dh_auto_configure populating that path, while debian/rules builds with--builddirectory=debian/_build. If dh-go 1.69 works the same way, that override fills a directory the build does not use and the autopkgtest build may fail or test the source copy instead of the installed one; running the autopkgtest would show it. - SPDX provenance of the patterns: licenses/getspdx.go ('Getspdx converts SPDX license definitions into license regular expressions (LREs)', expecting the SPDX license-list-data database checked out in _spdx) and licenses/README.md ('Many of the license definitions ... have been converted from the SPDX regular expressions into LRE patterns') show the .lre files derive from SPDX license-list-data. If that data is itself under CC-BY-3.0 (my recollection; I could not verify it from the package or from anything under /usr or /etc), an attribution stanza would belong in debian/copyright; not reported as an issue.
- No build and no test was run (read-only review), so no build or test result is reported; the source is a pure-Go module with no external imports and no go.sum to satisfy.
Proposed changes
None.
Uploader's response to the LLM review
The uploader was emailed about the review 5 hours ago.
Review Information
accepted — allocated to awm 1 hour ago, started 1 hour ago, completed 1 hour ago.