Review: golang-github-glebarez-go-sqlite 1.23.0+ds-1
Package Information
| Description | pure Go SQLite driver for database/sql (library) This package provides a driver for Go's standard database/sql package, registered under the name "sqlite". It uses the SQLite library translated to Go by modernc.org/sqlite, so it needs neither cgo nor a system SQLite library. The data source name accepts a file path or ":memory:", and query parameters such as _pragma (a PRAGMA run on each new connection), _time_format and _txlock. The compat subpackage registers the driver under the name "sqlite3" as well. It is a fork of modernc.org/sqlite (cznic/sqlite) with changes to make it work with the GORM object-relational mapper. |
|---|---|
| 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-glebarez-go-sqlite.git (browse) |
| Closes | #1148989 |
| Tracker | https://tracker.debian.org/pkg/golang-github-glebarez-go-sqlite |
| Uploaded | 5 hours ago |
New Package Report
.changes
| Distribution | unstable |
|---|---|
| Date | Fri, 25 Sep 2026 23:55:00 +0200 |
| Source | golang-github-glebarez-go-sqlite |
| Version | 1.23.0+ds-1 |
| Changed-By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Architecture | source all |
Changelog
golang-github-glebarez-go-sqlite (1.23.0+ds-1) unstable; urgency=medium . * Initial release (Closes: #1148989)
.dsc
| Section | golang |
|---|---|
| Priority | optional |
| Component | main |
| Package-List | golang-github-glebarez-go-sqlite-dev deb golang optional arch=all |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: go-sqlite
Upstream-Contact: Gleb Sakhnov <gleb.sakhnov@gmail.com>
Source: https://github.com/glebarez/go-sqlite
Files-Excluded: embed.db
embed2.db
Comment: embed.db and embed2.db are two 8 KiB SQLite database files with no
source in the tree; they are removed as binaries without source, as
golang-modernc-sqlite does for its copies of them. TestVFS in all_test.go
embeds them with go:embed and checks their whole content, which is:
embed.db: CREATE TABLE t(i, j, k); rows (1, 2, 3) and (40, 50, 60)
embed2.db: CREATE TABLE u(s, t); rows ('abc', 'def') and ('123', 'xyz')
debian/rules recreates them from debian/testdata/*.sql with sqlite3 before
the tests run and deletes them afterwards, so they are not installed.
Files: *
Copyright: 2017, 2019, 2021-2022 The Sqlite Authors
License: BSD-3-clause
Comment: The Sqlite Authors are listed in the AUTHORS file.
Files: all_test.go
Copyright: 2017 The Sqlite Authors
2022 Jim Kalafut
License: BSD-3-clause and Expat
Comment: The concurrentBenchmark code in this file is derived from
https://github.com/kalafut/go-sqlite-bench and carries its MIT licence
notice; the rest of the file is under the package licence.
Files: SQLITE-LICENSE
Copyright: none
License: public-domain
Comment: This file is not a licence of this package. It is the "SQLite Is
Public Domain" statement of https://www.sqlite.org/copyright.html, copied
from the SQLite project, whose documentation is public domain as the text
itself says. It describes the SQLite library that modernc.org/sqlite
translates to Go (golang-modernc-sqlite-dev); no SQLite code is in this
source.
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
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
.
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
2. 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.
.
3. Neither the name of the copyright holder 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.
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License: public-domain
All of the code and documentation in SQLite has been dedicated to the public
domain by the authors. All code authors, and representatives of the
companies they work for, have signed affidavits dedicating their
contributions to the public domain and originals of those signed affidavits
are stored in a firesafe at the main offices of Hwaci. Anyone is free to
copy, modify, publish, use, compile, sell, or distribute the original SQLite
code, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
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 2 hours ago.
Report
DFSG NEW review for golang-github-glebarez-go-sqlite version 1.23.0+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: 2 found
Licensing
debian/copyright is DEP-5 with Format 1.0, names every holder in the tree, and matches the evidence. The tree is BSD-3-clause ("The Sqlite Authors": headers on every upstream file, LICENSE), except the concurrentBenchmark block in all_test.go, which carries Jim Kalafut's MIT notice and is covered by the "BSD-3-clause and Expat" stanza, and SQLITE-LICENSE, which is the SQLite public-domain statement (a grant, not a restriction) and is correctly not claimed as a licence of this source. No non-free terms, no file without a licence, no binaries or generated blobs, and everything shipped is covered by the three licences in the file.
Packaging
Compatible debhelper 14 packaging for a library-only Go module: dh-go's golang addon is named explicitly (dh-go 1.69 no longer Provides: dh-sequence-golang, as the lintian override explains), dpkg-build-api (= 1) is valid and the rules supports all required targets, the Build-Depends match exactly what the build and its tests import, sqlite3 is a <!nocheck> dependency for the pre-test hook, Standards-Version 4.7.4 is current, and autopkgtest-pkg-go's generated test works because debian/rules recreates the excluded test databases in the build tree. The only observation worth a line is that the +ds repack leaves the installed test files unable to compile; Debian's own test path is unaffected.
Issues
1. [minor] [packaging] Installed dev package ships all_test.go referencing embed.db/embed2.db, which the +ds repack removed and no file in the package provides
- Files:
all_test.go:2702,all_test.go:2705,debian/rules:29-34,debian/copyright - Basis: checked, in the package or with a reference tool
- Evidence: all_test.go:
//go:embed embed.dband//go:embed embed2.db(TestVFS); debian/copyrightFiles-Excluded: embed.db embed2.db; debian/rulesexecute_after_dh_auto_test: rm -f $(foreach db,$(TEST_DBS),$(TEST_DB_DIR)/$(db).db), which runs before dh_auto_install, while /usr/share/perl5/Debian/Debhelper/Buildsystem/golang.pmsub installcopies every file under the build directory's src/, *_test.go included. - Problem: The two databases exist only inside the build tree between dh_auto_test and dh_auto_install, so /usr/share/gocode/src/github.com/glebarez/go-sqlite/ gets all_test.go without them, and
go test(orgo vet) run in the installed directory fails to compile with "pattern embed.db: no matching files found". The package's own tests are unaffected: autopkgtest-pkg-go runs /usr/bin/dh_golang_autopkgtest, which copies the installed sources into the build directory and runsdebian/rules build, and the execute_before_dh_auto_test hook recreates the databases first (autodep8 adds sqlite3 through @builddeps@). The divergence is visible only to someone running the tests by hand from /usr/share/gocode, but it is a shipped Go file that cannot be compiled. - Fix: Either keep the two files in the tarball instead of excluding them (they are upstream's own test data, 8 KiB each, and dropping the repack would also remove the sqlite3 build dependency and both rules hooks), or add a patch that drops the embed-based TestVFS from the installed copy, or at least state the limitation in debian/README.source next to the explanation of the repack.
Verified
- Prescan,
SQLITE-LICENSE:9anddebian/copyright:98"...for any purpose, commercial or non-commercial...": this is the SQLite public-domain dedication, which grants rights ("Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original SQLite code ... for any purpose, commercial or non-commercial, and by any means") and restricts nothing. The file is not a licence of this package and theFiles: SQLITE-LICENSEstanza says so; the phrasing is not a DFSG problem. - Read debian/copyright in full: DEP-5, Format 1.0,
Files-Excluded: embed.db embed2.db, four Files stanzas (*,all_test.go,SQLITE-LICENSE,debian/*) and three stand-alone licences (BSD-3-clause, Expat, public-domain), all with full text; later stanzas correctly override*. - Every holder in the tree is named: all upstream files carry
Copyright <year> The Sqlite Authorswith the BSD-style reference to LICENSE (LICENSE:Copyright (c) 2017 The Sqlite Authors. All rights reserved.), and all_test.go:2826-2846 carriesCopyright (c) 2022 Jim Kalafutand the MIT text for concurrentBenchmark.Files: *(The Sqlite Authors) and theall_test.gostanza (The Sqlite Authors, Jim Kalafut; BSD-3-clause and Expat) match. AUTHORS/CONTRIBUTORS are name lists, not notices. - No file is left uncovered: outside debian/, every path (AUTHORS, CONTRIBUTORS, LICENSE, README.md, SQLITE-LICENSE, the ten root .go files, go.mod/go.sum, benchmark/, compat/, examples/example1/, functest/, .github/) is matched by
Files: *or by an overriding stanza, and debian/ bydebian/*. - No binaries and no preferred-form-for-modification problems: the only non-.go files are Markdown, YAML (.github), go.mod/go.sum, name lists and three SQL/statement files; no .db (the two excluded ones are absent from the tree and from the .orig.tar.xz), no .so/.a/.jar/.class/image/font/PDF. Minified code or vendored third-party copies: none (benchmark/bench_test.go imports mattn/go-sqlite3 but vendors nothing).
- Licence evidence collected by grepping the whole tree for Copyright/(C)/SPDX-License-Identifier/Licensed under/Permission is hereby granted/GNU/Apache/Mozilla/public domain/All rights reserved: only the two holders above and the three licences in debian/copyright appear; no non-commercial, no-modification or field-of-use wording anywhere beyond the SQLite grant quoted above.
- sqlite.go:5
//go:generate go run generator.go -full-path-commentsnames a file upstream does not ship (it is absent from the tree and from the .orig.tar.xz, which has addport.go but no generator.go). It is only a directive: DH_GOLANG_GO_GENERATE is unset, sogo generateis never run and nothing is generated in the build. - Packaging read in full: debian/{changelog,control,copyright,gbp.conf,golang-github-glebarez-go-sqlite-dev.examples,rules,README.source,salsa-ci.yml,source/format,source/lintian-overrides,testdata/embed.sql,testdata/embed2.sql,upstream/metadata}. No debian/patches, no maintainer scripts, no debian/tests (autodep8 generates one for
Testsuite: autopkgtest-pkg-go: /usr/share/autodep8/support/go/generate runs /usr/bin/dh_golang_autopkgtest withDepends: @, @builddeps@). - Build-Depends cover exactly what is compiled: non-test code imports modernc.org/libc, modernc.org/sqlite/lib and golang.org/x/sys/unix (matching Depends), while github.com/google/pprof/profile and modernc.org/mathutil are imported only by all_test.go, so Build-Depends (not Depends) is right, dh_auto_test running as part of
buildat compat 14. - sqlite3 <!nocheck> matches debian/rules: dh skips override/hook targets of dh_auto_test under
nocheckfrom compat 13, so the test databases are not created in a nocheck build and sqlite3 is not needed there. - debian/rules'
TEST_DB_DIR := debian/_build/src/github.com/glebarez/go-sqliteis the right path: Buildsystem/golang.pmsub configurecopies sources to$builddir/src/$DH_GOPKG,get_builddir()returns the--builddirectoryvalue relative to the top directory, and dh_golang_autopkgtest's override computesAPT_BDIRthe same way beforecp -a /usr/share/gocode/src "$APT_BDIR". - functest/ contains only func_test.go; Buildsystem/golang.pm's get_targets drops such packages from the build ("contains no non-test Go files, removing it from build"), so it cannot break
go install. - dh-go 1.69 (apt-cache) has no
Provides: dh-sequence-golangandConflicts: dh-golang, and debian/rules passes--with=golangexplicitly, so debian/source/lintian-overrides' missing-build-dependency-for-dh-addon override is justified. dpkg-build-api (= 1) is a virtual package provided by dpkg-dev (= 1) (dpkg-build-api(7): level 1 is the recommended level, from dpkg 1.22), and dh supplies all targets it requires. Standards-Version 4.7.4 against Policy 4.7.4.1 is current. - debian/gbp.conf
dist = DEP14is accepted: gbp's get_pbuilder_dist testsoptions.pbuilder_dist == 'DEP-14' or options.pbuilder_dist == 'DEP14'(gbp/scripts/buildpackage.py:212). - changelog sanity: 1.23.0+ds-1,
unstable, initial release closing #1148989, maintainer/uploader matching debian/control, anddebian/*copyright years (2026) matching. - uscan found the packaged version as the newest upstream release (upstream
1.23.0, packaged1.23.0+ds).
Not confirmed
- The recreated test databases could not be compared with upstream's: the excluded embed.db/embed2.db are in neither the tree nor the .orig.tar.xz, so I could not see whether debian/testdata/*.sql reproduces them exactly. debian/README.source says TestVFS only compares rows and the bytes (SQLite version stamp) do not matter; a build would show it.
- I could not run a build or the test suite (read-only; nothing here may be executed), so the behaviour of the debian/rules hooks and of dh_golang_autopkgtest rests on reading debian/rules, the golang buildsystem module and /usr/bin/dh_golang_autopkgtest.
Proposed changes
None.
Uploader's response to the LLM review
The uploader was emailed about the review 2 hours ago.
Review Information
accepted — allocated to awm 0 hours ago, started 0 hours ago, completed 0 hours ago.