Review: duckdb 2.0.0+dfsg-1
New Package Report
.changes
| Source | duckdb |
|---|---|
| Version | 2.0.0+dfsg-1 |
| Changed-By | Dominique Belhachemi <domibel@debian.org> |
| Architecture | source amd64 |
| Distribution | unstable |
| Date | Tue, 27 Oct 2026 09:30:27 -0400 |
Changelog
duckdb (2.0.0+dfsg-1) unstable; urgency=medium
.
* New upstream release 2.0.0
* Repack upstream tarball as +dfsg: combine duckdb core with 6
out-of-tree extensions (httpfs, quack, ui, sqlite_scanner,
postgres_scanner, mysql_scanner), so they can be built for other
architectures using Debian's own baseline.
* debian/rules: add -DDUCKDB_OPTIMIZATION_PROFILE=NONE to disable the
new unconditional -march=x86-64-v3 default on amd64
* Rename libduckdb1.5 to libduckdb2.0 to match the new SOVERSION
* debian/control: drop the now-unused libicu-dev build-dep
* Build the 6 out-of-tree extensions as standalone loadable
files in /usr/lib/duckdb/extensions/, and make them
preferred over local ~/.duckdb/extensions/
* debian/control: add libcurl4-openssl-dev, libmariadb-dev,
libpq-dev, libssl-dev, python3, zlib1g-dev build-deps
* Disable autoinstall of known extensions by default, so extension
use never triggers a silent internet connection
* debian/README.Debian: document the 6 bundled extensions
* debian/tests: add autopkgtest coverage for the 6 bundled extensions
* Fix "LOAD ui;" failing when ~/.duckdb doesn't exist yet
* Fix ui extension build failing without a git checkout
* debian/watch: add Dversion-Mangle to strip +dfsg for uscan.dsc
| Priority | optional |
|---|---|
| Component | main |
| Package-List | duckdb deb database optional arch=any libduckdb-dev deb libdevel optional arch=any libduckdb2.0 deb libs optional arch=any |
| Section | database |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/duckdb/duckdb
Upstream-Name: duckdb
Upstream-Contact:
https://github.com/duckdb/duckdb,
Files: *
Copyright: 2018-2025 Stichting DuckDB Foundation
License: Expat
Files: extension_external/sqlite/src/sqlite/sqlite3.c
extension_external/sqlite/src/sqlite/sqlite3.h
Copyright: none
License: public-domain
Comment: SQLite amalgamation; the author disclaims copyright to this source
code and dedicates it to the public domain. See https://www.sqlite.org/copyright.html.
Files: debian/*
Copyright: 2026 Dominique Belhachemi <domibel@debian.org>
License: Expat
Files: third_party/jemalloc/*
Copyright: 2002-present Jason Evans <jasone@canonware.com>
2007-2012 Mozilla Foundation
2009-present Facebook, Inc.
License: BSD-2-Clause
Files: src/include/duckdb/common/adbc/*
Copyright: Apache Arrow Authors
License: Apache-2.0
Files: src/include/duckdb/common/arrow/nanoarrow/*
Copyright: Apache Arrow Authors
License: Apache-2.0
Files: src/common/adbc/nanoarrow/*
Copyright: Apache Arrow Authors
License: Apache-2.0
Files: test/api/adbc/*
Copyright: Apache Arrow Authors
License: Apache-2.0
Files: third_party/catch/*
Copyright: 2021 Two Blue Cubes Ltd
License: BSL-1.0
Files: third_party/concurrentqueue/*
Copyright: 2013-2016 Cameron Desrochers
License: BSD-2-Clause or BSL-1.0
Files: third_party/fast_float/*
Copyright: 2021 Daniel Lemire, João Paulo Magalhaes
License: Expat or Apache-2.0
Files: third_party/fastpforlib/*
Copyright: 2013-2014 Daniel Lemire
License: Apache-2.0
Files: third_party/fmt/*
Copyright: 2012-present Victor Zverovich
License: Expat
Files: third_party/fsst/*
Copyright: 2018-2020 CWI, TU Munich, FSU Jena
License: Expat
Files: third_party/httplib/*
Copyright: 2017 yhirose
License: Expat
Files: third_party/hyperloglog/*
Copyright: 2012 Artsyinc, Inc.
License: Expat
Files: third_party/jaro_winkler/*
Copyright: 2022 Max Bachmann
License: Expat
Files: third_party/mbedtls/*
Copyright: The Mbed TLS Contributors
License: Apache-2.0 or GPL-2+
Comment: Dual-licensed; users may choose either license.
Files: third_party/miniz/*
Copyright: 2010-2014 RAD Game Tools, Valve Software, Rich Geldreich, Tenacious Software LLC
License: Expat
Files: third_party/parquet/*
Copyright: 2012-2014 The Apache Software Foundation
License: Apache-2.0
Files: third_party/pcg/*
Copyright: 2014-2017 Melissa O'Neill, PCG Project contributors
License: Expat
Files: third_party/pdqsort/*
Copyright: 2021 Orson Peters
License: Zlib
Files: third_party/re2/*
Copyright: 2009 The RE2 Authors
License: BSD-3-Clause
Files: third_party/ska_sort/*
Copyright: 2016 Malte Skarupke
License: BSL-1.0
Files: third_party/skiplist/*
Copyright: 2017-2023 Paul Ross
License: Expat
Files: third_party/tdigest/*
Copyright: Ted Dunning
License: Apache-2.0
Files: third_party/thrift/*
Copyright: The Apache Software Foundation
License: Apache-2.0
Files: third_party/utf8proc/*
Copyright: 2009-2019 Steven G. Johnson, Jiahao Chen, Tony Kelman, Jonas Fonseca, Public Software Group e.V.
License: Expat
Files: third_party/vergesort/*
Copyright: 2015 Morwenn
License: Expat
Files: tools/shell/linenoise/*
Copyright: 2014-2016 Salvatore Sanfilippo, Pieter Noordhuis
License: BSD-2-Clause
Files: tools/swift/*
Copyright: Apache Arrow Authors
License: Apache-2.0 or Expat
License: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
.
On Debian systems, the full text of the Apache License, Version 2.0
can be found in the file /usr/share/common-licenses/Apache-2.0.
License: BSD-2-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.
.
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: 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: BSL-1.0
Boost Software License - Version 1.0 - August 17th, 2003
.
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
.
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated
by a source language processor.
.
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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
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: GPL-2+
On Debian systems, the full text of the GNU General Public License
version 2 can be found in the file /usr/share/common-licenses/GPL-2.
License: public-domain
This work has been dedicated to the public domain by its author, who
disclaims copyright to it.
License: Zlib
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
use of this software.
.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
.
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software in
a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
DFSG Assistant LLM REVIEW 5 blocker, 9 important, 4 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 4 days ago.
Report
DFSG NEW review for duckdb version 2.0.0+dfsg-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: No
- Issues: 5 blocker, 9 important, 4 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: 104 found (37 not listed by the scan, so not checked)
Licensing
Two of the extensions compiled into libduckdb.so carry the TPC's non-free terms: extension/tpch/dbgen is under the TPC End User License Agreement 2.2 (no fee for distribution, restrictions on publishing results), and extension/tpcds/dsdgen carries the TPC 'Legal Notice' which reserves all rights and grants nothing. Neither is described in debian/copyright, whose Files: * stanza calls the whole tree Expat/Stichting DuckDB Foundation. Beyond that the file is substantially incomplete: several files with other holders and other licences (BSD-3-Clause termcolor and Redis sds, Unicode data tables, Apache-2.0 with Swift Runtime Library Exception, the Unlicense portion of miniz, the Lucent notice in re2, zlib in concurrentqueue) are all covered only by the catch-all, and the third-party test data (AdventureWorks, Chinook/Sakila) is not addressed at all.
Packaging
The packaging structure is competent: quilt with twelve well-headed patches, system libraries used for zstd/xxhash/snappy/lz4/brotli/yyjson/mbedtls/mariadb/libpq, compat 14 with correct dh overrides, a correct library/-dev/CLI split, a manpage, README.source and README.Debian, and an autopkgtest suite that builds its checks out of the source. What blocks it is that the non-free TPC dbgen/dsdgen code is deliberately built in (-DBUILD_EXTENSIONS="autocomplete;tpch;tpcds" -DLINK_CORE_EXTENSIONS=TRUE), plus two autopkgtest defects (the ui test proxies to ui.duckdb.org and so needs the internet; the quack and ui tests open TCP ports without Restrictions: isolation-container) and an unnecessary embedded copy of SQLite 3.38.1.
Issues
1. [blocker] [licensing] extension/tpch/dbgen is the non-free TPC End User License Agreement and is compiled into libduckdb.so
- Files:
extension/tpch/dbgen/LICENSE:60,86,141; extension/tpch/dbgen/rng64.cpp:12-29; extension/tpch/dbgen/CMakeLists.txt; debian/rules (BUILD_EXTENSIONS, LINK_CORE_EXTENSIONS); debian/copyright:7-9 - Basis: checked, in the package or with a reference tool
- Evidence: LICENSE:
restricted, non-exclusive, revocable license to install and use;c. Public Disclosure: You may not publicly disclose any performance results produced while using the Software;d. You may not charge a fee for the distribution of this Software. rng64.cpp:This is an unpublished copyright work Gradient Systems, Inc.,All Rights Reserved,THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF GRADIENT SYSTEMS, INC. - Problem: This is not a free licence: it forbids charging a fee for distribution (DFSG 1), restricts what may be published about use (a field-of-use restriction), and grants only a revocable licence. debian/rules builds tpch with
-DBUILD_EXTENSIONS="autocomplete;tpch;tpcds" -DLINK_CORE_EXTENSIONS=TRUE, so extension/tpch/dbgen/CMakeLists.txt's objects end up in libduckdb.so and the CLI; the TPC queries (answers/, queries/, include/tpch_constants.hpp) are TPC material too. debian/copyright has no stanza for any of it - theFiles: *stanza claims it is Expat, Stichting DuckDB Foundation. - Fix: Repack extension/tpch out of the source (record it in a
Files-Excluded:field) and drop tpch from BUILD_EXTENSIONS, or remove the benchmark extension; if any TPC file stays, give it its own stanza with the TPC licence text and holder.
2. [blocker] [licensing] extension/tpcds/dsdgen carries the TPC 'Legal Notice', which reserves all rights and grants no permission to copy or distribute
- Files:
extension/tpcds/dsdgen/include/dsdgen-c/release.h:1-39; extension/tpcds/dsdgen/dsdgen-c/*.cpp (e.g. genrand.cpp:1-35, StringBuffer.cpp:1-35, 108 files); extension/tpcds/dsdgen/tpcds.idx; debian/rules; debian/copyright:7-9 - Basis: checked, in the package or with a reference tool
- Evidence:
This document and associated source code (the "Work") is a part of a benchmark specification maintained by the TPC.The TPC reserves all right, title, and interest to the Work as provided under U.S. and international laws- followed only by a No Warranty section andContributors: Gradient Systems, with no grant of any right to use, copy, modify or distribute. - Problem: With no licence grant at all this fails DFSG 1 and 3 (no permission to distribute, let alone modified versions), so the source package contains non-free material. dsdgen is also built into libduckdb.so through the same BUILD_EXTENSIONS/LINK_CORE_EXTENSIONS flags, and tpcds.idx, schema/ and queries/ are TPC-distributed data. debian/copyright does not mention the tree at all (
Files: *says Expat). - Fix: Repack extension/tpcds out of the source and remove tpcds from BUILD_EXTENSIONS (the same treatment as tpch), or drop the package.
3. [blocker] [licensing] Files: * names only Stichting DuckDB Foundation while src/ contains MIT code from CWI, Martin Ankerl and salesforce.com
- Files:
debian/copyright:7-9; src/include/duckdb/storage/compression/alp/algorithm/{alp.hpp,LICENSE}; src/include/duckdb/storage/compression/alprd/algorithm/{alprd.hpp,LICENSE}; src/common/checksum.cpp:11-13; src/common/types/hash.cpp:80-82,121; src/include/duckdb/execution/merge_sort_tree.hpp:26-45 - Basis: checked, in the package or with a reference tool
- Evidence:
MIT License/Copyright (c) 2023 CWI, Azim Afroozeh, Leonardo Xavier Kuffo Rivero;// MIT License/// Copyright (c) 2018-2021 Martin Ankerl;// MIT License Text:/// Copyright 2022 salesforce.com, inc. - Problem: The licence (Expat) happens to match, but the copyright statement is false for these compiled-in files: they name CWI/Azim Afroozeh/Leonardo Kuffo Rivero, Martin Ankerl and salesforce.com, none of which appear in debian/copyright. The ALP/ALPRD LICENSE files are shipped in-tree and are the only evidence of those holders.
- Fix: Add stanzas for the ALP/ALPRD algorithm directories, src/common/checksum.cpp and src/common/types/hash.cpp, and src/include/duckdb/execution/merge_sort_tree.hpp, naming those holders.
4. [blocker] [licensing] BSD-3-Clause files are declared Expat: test/sqlite/termcolor.hpp (Ihor Kalnytskyi) and third_party/hyperloglog/sds.{cpp,hpp} (Sanfilippo, Oran Agra, Redis Labs)
- Files: test/sqlite/termcolor.hpp:8; third_party/hyperloglog/sds.cpp:1-18; third_party/hyperloglog/sds.hpp:1-18; debian/copyright:7-9 (
Files: *-> Expat) and :72-74 (third_party/hyperloglog/*-> 2012 Art.sy, Expat) - Basis: checked, in the package or with a reference tool
- Evidence: termcolor.hpp:
:copyright: (c) 2013 by Ihor Kalnytskyi/:license: BSD, see LICENSE for details- and there is no LICENSE file under test/sqlite/. sds.cpp:Copyright (c) 2006-2015, Salvatore Sanfilippo,Copyright (c) 2015, Oran Agra,Copyright (c) 2015, Redis Labs, Incwith the three-clause BSD text includingNeither the name of Redis nor the names of its contributors may be used to endorse. - Problem: Both are BSD-3-Clause (an endorsement-clause licence that also obliges reproducing its notice), not Expat, and neither holder is named. The hyperloglog stanza is right for hyperloglog.cpp (Art.sy, Expat) but wrong for sds.cpp/sds.hpp, which are a vendored Redis SDS with a different licence; sds is compiled into libduckdb.so.
- Fix: Split third_party/hyperloglog/* into a stanza for sds.{cpp,hpp} with its holders and BSD-3-Clause, and add a stanza for test/sqlite/termcolor.hpp with Ihor Kalnytskyi and BSD-3-Clause (its licence text is not in the tree).
5. [blocker] [licensing] Unicode data licences are unrecorded: utf8proc_data.cpp (UCD) and extension/icu/collation/generated/collation_data.cpp (CLDR 48, UCD 17.0.0)
- Files:
third_party/utf8proc/LICENSE:59-90; third_party/utf8proc/utf8proc_data.cpp (no header); extension/icu/collation/generated/collation_data.cpp:5-6; debian/copyright:121-123 - Basis: checked, in the package or with a reference tool
- Evidence: utf8proc LICENSE third section:
## Unicode data license ##/Copyright (c) 1991-2007 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.requiring the notice and permission text to accompany copies and modifications to be marked. collation_data.cpp:generated ... from Unicode Consortium data (CLDR release-48, UCD 17.0.0). - Problem: The generated data files are derived from Unicode Consortium data under the Unicode data licence, which is not Expat and is not in /usr/share/common-licenses, so its text and holder must be in debian/copyright. The utf8proc stanza (Expat, 2009-2019 Steven G. Johnson et al.) covers only the code; Unicode, Inc. is not named anywhere, and the CLDR-derived collation tables have no stanza at all.
- Fix: Add a stanza covering third_party/utf8proc/utf8proc_data.cpp and extension/icu/collation/generated/collation_data.cpp with
Copyright: 1991-2007 Unicode, Inc.and a stand-alone licence paragraph reproducing the Unicode data licence.
6. [important] [licensing] third_party/jemalloc/include/msvc_compat/C99/stdint.h is BSD-3-Clause (Alexander Chemeris) under the BSD-2-Clause jemalloc stanza
- Files:
third_party/jemalloc/include/msvc_compat/C99/stdint.h:4-24; debian/copyright:22-26 - Basis: checked, in the package or with a reference tool
- Evidence:
Copyright (c) 2006-2008 Alexander Chemeris; clause3. The name of the author may be used to endorse or promote products derived from this software without specific prior written permission. - Problem: The jemalloc stanza (BSD-2-Clause, Jason Evans/Mozilla/Facebook) is right for jemalloc's own files but not for this vendored MSVC compatibility header, which is a three-clause BSD file from another author.
- Fix: Add a stanza for third_party/jemalloc/include/msvc_compat/C99/stdint.h with Alexander Chemeris and BSD-3-Clause (or reword the jemalloc stanza and add a later, more specific one).
7. [important] [licensing] third_party/concurrentqueue/lightweightsemaphore.h is zlib-licensed (Jeff Preshing), not BSD-2-Clause or BSL-1.0
- Files:
third_party/concurrentqueue/lightweightsemaphore.h:52-67; third_party/concurrentqueue/LICENSE:1-6; debian/copyright:48-50 - Basis: checked, in the package or with a reference tool
- Evidence: LICENSE:
Jeff Preshing's semaphore implementation (used in the blocking queue) which has a zlib license (embedded in lightweightsempahore.h); the header carriesCopyright (c) 2015 Jeff Preshingand the zlib wordingThis software is provided 'as-is' ... The origin of this software must not be misrepresented. - Problem: The vendored file is explicitly excluded from the concurrentqueue licence and is under zlib, which is neither of the two licences the stanza names, and Jeff Preshing is not named. The file is compiled into libduckdb.so.
- Fix: Add a later
Files: third_party/concurrentqueue/lightweightsemaphore.hstanza withCopyright: 2015 Jeff PreshingandLicense: Zlib.
8. [important] [licensing] third_party/re2/util/{rune.cc,utf.h} carry the Lucent/Plan 9 notice, not BSD-3-Clause, and Lucent Technologies is unnamed
- Files:
third_party/re2/util/rune.cc:1-13; third_party/re2/util/utf.h:1-13; debian/copyright:101-103 - Basis: checked, in the package or with a reference tool
- Evidence:
The authors of this software are Rob Pike and Ken Thompson. Copyright (c) 2002 by Lucent Technologies. Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included ... - Problem: This is a different (permissive) grant from the three-clause BSD text in the re2 stanza, and it is the notice that must be reproduced; its holder, Lucent Technologies, is absent from debian/copyright.
- Fix: Add a stanza for third_party/re2/util/rune.cc and third_party/re2/util/utf.h naming Rob Pike, Ken Thompson and Lucent Technologies, with their notice as the licence text.
9. [important] [licensing] third_party/miniz/miniz.cpp contains Martin Raiber's Expat code and an Unlicense public-domain portion, declared Expat only
- Files:
third_party/miniz/miniz.cpp:576-602 (Unlicense), :2883-2889 (Martin Raiber); debian/copyright:85-87 - Basis: checked, in the package or with a reference tool
- Evidence:
This is free and unencumbered software released into the public domain ... For more information, please refer to <http://unlicense.org/>; andCopyright 2013-2014 RAD Game Tools and Valve Software / Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC / Copyright 2016 Martin Raiber. - Problem: The stanza names neither Martin Raiber nor the public-domain (Unlicense) portion, so it misstates both the holders and the terms of part of the file. Both are free, but the file is compiled in and its copyright must be accurate.
- Fix: Add Martin Raiber to the miniz stanza and mention the Unlicense/public-domain part (a separate
Files:stanza or aComment:), with the Unlicense text if it is to be represented as a licence.
10. [important] [licensing] tools/swift/* is declared 'Apache Arrow Authors, Apache-2.0 or Expat' but is Stichting DuckDB Foundation Expat plus Apple's Apache-2.0 with Swift Runtime Library Exception
- Files:
debian/copyright:133-135; tools/swift/duckdb-swift/LICENSE; tools/swift/duckdb-swift/Sources/DuckDB/Types/IntHuge.swift:1-20; tools/swift/duckdb-swift/Sources/DuckDB/Database.swift:1-22 - Basis: checked, in the package or with a reference tool
- Evidence: duckdb-swift/LICENSE:
Copyright 2018-2024 Stichting DuckDB Foundation+ Expat, and every Swift source hasCopyright © 2018-2024 Stichting DuckDB Foundation; IntHuge.swift instead hasCopyright (c) 2014 - 2021 Apple Inc. and the Swift project authors/Licensed under Apache License v2.0 with Runtime Library Exception. - Problem: The holder is wrong for the bulk of the directory (it is the DuckDB Foundation, not Apache Arrow), the 'or Expat' disjunction does not exist for IntHuge.swift, and the Swift Runtime Library Exception that accompanies Apple's Apache-2.0 text is not represented at all. (The Swift tree is not built by this package, but it ships in the source.)
- Fix: Replace the stanza with
Copyright: 2018-2024 Stichting DuckDB Foundation+License: Expatfor tools/swift/* and a later stanza for IntHuge.swift with Apple Inc./Swift project authors, Apache-2.0 and the Runtime Library Exception (text included, as it is not in common-licenses).
11. [important] [licensing] MIT/BSL files covered only by Files: *: extension_external/ui/third_party/httplib and extension_external/*/database-connector/test/catch
- Files:
extension_external/ui/third_party/httplib/httplib.hpp:1-13 and LICENSE; extension_external/{mysql,postgres,sqlite}/database-connector/test/catch/{catch.hpp,LICENSE.txt}; debian/copyright:68-70, 44-46, 7-9 - Basis: checked, in the package or with a reference tool
- Evidence: httplib.hpp:
Copyright (c) 2023 Yuji Hirose. All rights reserved./MIT License/taken from: https://github.com/yhirose/cpp-httplib/blob/v0.14.3/httplib.h(a modified copy). catch.hpp:Copyright (c) 2022 Two Blue Cubes Ltd./Distributed under the Boost Software License, Version 1.0.plusSPDX-License-Identifier: BSL-1.0. - Problem: The
third_party/httplib/*andthird_party/catch/*stanzas are anchored at those paths, so the copies inside extension_external/ fall through toFiles: *(DuckDB Foundation, Expat). These are third-party code with their own holders and, for catch, a different licence. The ui httplib copy is compiled into the shipped ui extension. - Fix: Add stanzas for extension_external/ui/third_party/httplib/* (yhirose, Expat) and extension_external//database-connector/test/catch/ (Two Blue Cubes Ltd, BSL-1.0).
12. [important] [licensing] Third-party test data (AdventureWorks, Chinook, Sakila, walmart sales) is not addressed by debian/copyright
- Files:
test/sqlserver/data/*.csv.gz; extension_external/sqlite/data/db/chinook.db; extension_external/sqlite/data/db/sakila.db; test/sql/window/walmart.csv.gz; debian/copyright:7-9 - Basis: inferred from what was read, not seen directly
- Evidence: test/sqlserver/test_sqlserver.test_slow and test/sqlserver/scrape.py retrieve Microsoft's AdventureWorks tables (Address, Employee, Person, ... as Address.csv.gz etc.); extension_external/sqlite/data/db/ holds chinook.db and sakila.db plus sakila-examples.sql; the
Files: *stanza attributes all of it to Stichting DuckDB Foundation under Expat. - Problem: These are sample data sets from other projects with their own terms, not DuckDB-authored files, and the copyright file says nothing about them. Whether the AdventureWorks/Sakila terms are DFSG-free I could not check offline, but the attribution is certainly wrong as written.
- Fix: Establish the provenance and licence of each data set and record it in its own stanza (or remove the data sets, which no shipped test uses).
13. [important] [packaging] The autopkgtest 'ui' test needs the internet: it proxies through the extension to https://ui.duckdb.org
- Files:
debian/tests/ui (last line); extension_external/ui/src/http_server.cpp:182-192,293-317; extension_external/ui/src/include/settings.hpp:9 - Basis: checked, in the package or with a reference tool
- Evidence: debian/tests/ui:
run curl -sf -o /dev/null http://localhost:4213/; the server routesGET /.*toHandleGet, which doeshttplib::Client client(remote_url); ... auto result = client.Get(req.path, req.params, headers);and sets status 500 when the fetch fails;#define UI_REMOTE_URL_SETTING_DEFAULT "https://ui.duckdb.org". - Problem: curl -sf fails on the 500 that a network-less testbed produces, and in a networked one the test depends on a third-party web service being up. Debian autopkgtests must be hermetic; this one also masked as a UI test while testing an external site, and no restriction or documentation warns of the dependency.
- Fix: Test a purely local endpoint instead (e.g.
curl -sf http://localhost:4213/info), or run start_ui and assert on the local token/info responses; keep the remote UI out of the test.
14. [important] [packaging] quack and ui autopkgtests open TCP ports without Restrictions: isolation-container
- Files: debian/tests/control; debian/tests/quack (port 28391); debian/tests/ui (port 4213); extension_external/ui/src/http_server.cpp:209 (
server.listen("localhost", local_port)) - Basis: checked, in the package or with a reference tool
- Evidence: debian/tests/control declares only
Restrictions: allow-stderr, while both scripts start a server on a fixed local port and connect to it; the autopkgtest specification saysisolation-containeris for tests thatwant to start services or open network TCP portsand that thiscommonly fails in a simple chroot/schroot. - Problem: On schroot-based runners these two tests can fail for reasons unrelated to the package, and the fixed port 28391 can also clash with another test on a shared testbed. The restriction is what tells the runner to use a container.
- Fix: Add
Restrictions: allow-stderr isolation-container(or split the socket-using tests into their own stanza) and pick a free port (bind 0 or an ephemeral port) rather than hard-coding 28391.
15. [minor] [licensing] scripts/ LLVM files and the PostgreSQL libpq diff are Apache-2.0 WITH LLVM-exception and PostgreSQL-licensed, unnamed
- Files:
scripts/clang-tidy-diff.py:1-7; scripts/run-clang-tidy.py:1-7; extension_external/postgres/vcpkg_ports/libpq/libpq-and-client-tools.diff:41,79; debian/copyright:7-9 - Basis: checked, in the package or with a reference tool
- Evidence:
Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions./SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception; the diff carries# Copyright (c) 2022-2025, PostgreSQL Global Development Groupin its context lines. - Problem: The LLVM exception is a distinct licence text (not plain Apache-2.0) that is not in the tree or common-licenses, and the diff is PostgreSQL-licensed material with a holder not named; both are covered only by the
Files: *Expat claim. - Fix: Add stanzas naming the LLVM authors (Apache-2.0 WITH LLVM-exception, including the exception text) and PostgreSQL Global Development Group (PostgreSQL licence, text included) for those files.
16. [minor] [licensing] third_party/pcg is Apache-2.0 OR MIT, not Expat alone, and its Apache text is absent from the tree
- Files:
third_party/pcg/pcg_random.hpp:1-17 (same in pcg_extras.hpp, pcg_uint128.hpp); debian/copyright:93-95 - Basis: checked, in the package or with a reference tool
- Evidence:
SPDX-License-Identifier: (Apache-2.0 OR MIT);Licensed under the Apache License, Version 2.0 (provided in LICENSE-APACHE.txt ...) or under the MIT license (provided in LICENSE-MIT.txt ...)- neither LICENSE-APACHE.txt nor LICENSE-MIT.txt is in third_party/pcg/. - Problem: The stanza records only Expat, so a consumer cannot tell that Apache-2.0 is also offered, and the Apache text the headers refer to is not present; the Expat text in debian/copyright is adequate for the MIT branch but the dual offer should be stated.
- Fix: Change the stanza to
License: Apache-2.0 or Expatfor third_party/pcg/*.
17. [minor] [licensing] Source: names only duckdb/duckdb although the tarball also contains six extension repositories
- Files:
debian/copyright:2; extension_external/{httpfs,quack,ui,sqlite,postgres,mysql}/; debian/changelog (2.0.0+dfsg-1), debian/README.source - Basis: checked, in the package or with a reference tool
- Evidence:
Source: https://github.com/duckdb/duckdb; README.source:Added 6 out-of-tree extensions to the .orig source file. - Problem: The .orig tarball is a merge of duckdb plus duckdb/httpfs, duckdb/quack, duckdb/duckdb-ui, duckdb/sqlite_scanner, duckdb/postgres_scanner and duckdb/mysql_scanner (plus the SQLite amalgamation), so the Source field describes only part of it. Provenance matters for anyone checking a file's origin later.
- Fix: List the extension repositories under Source (or in a Comment), with the versions/commits they were taken at.
18. [minor] [packaging] sqlite_scanner builds its own SQLite 3.38.1 amalgamation although Debian ships libsqlite3
- Files:
extension_external/sqlite/src/sqlite/sqlite3.c:1-20, extension_external/sqlite/src/sqlite/CMakeLists.txt; debian/control - Basis: checked, in the package or with a reference tool
- Evidence:
This file is an amalgamation of many separate C source files from SQLite version 3.38.1; the CMakeLists compiles it assqlite_libinto the sqlite_scanner extension, while Debian has sqlite3 (libsqlite3-dev) and no Build-Depends on it. - Problem: An 8 MB embedded copy of SQLite (2022 vintage) is shipped inside the duckdb package, so SQLite security fixes have to wait for a duckdb upload rather than arriving with the sqlite3 package. It is also third-party code Debian already maintains.
- Fix: Build the extension against libsqlite3-dev (the extension has a include/sqlite3 shim path), or at least document in README.source why the amalgamation is kept and how it is updated; either way, split the licence stanza as noted for the amalgamation.
Verified
- debian/ read in full: control, rules, changelog, copyright, source/format (3.0 quilt), install/manpages/lintian-overrides files, extension-configs/*.cmake, all twelve patches (each has Description, Author, Forwarded and Last-Update headers), tests/{control,CMakeLists.txt,run-all-tests,cli,library,bigint,json,icu,tpch,parquet,sqlite_scanner,quack,ui,extension_trust}, README.source, README.Debian, gbp.conf, salsa-ci.yml, cmake-instrumentation.json.
- Standards-Version 4.7.4 against Policy 4.7.4.1 (policy tool): current enough; compat is debhelper-compat (= 14), and the missing ${misc:Depends}/${shlibs:Depends} fields are what dh_gencontrol adds at that level.
- Build-Depends checked against what rules and patches use;
architecture-is-64-bitis provided by architecture-properties 0.2.6 and libyyjson-dev exists (0.12.0+ds-2) (apt-cache tool). System zstd/xxhash/snappy/lz4/brotli/yyjson/mbedtls/mariadb/libpq replacements are implemented by the patches and the include shims. - autopkgtest mechanics: the spec guarantees the cwd is the unpacked source root, so
cmake -S debian/testsand PACKAGE_ROOT (= source root) are right; every test named in debian/tests/CMakeLists.txt exists. - Prescan archive/compressed files: test/sql/table_function/files/four.blob is a zip test fixture; test/sql/window/walmart.csv.gz and test/sqlserver/data/.csv.gz are gzipped CSV test data (provenance noted in an issue); extension_external/sqlite/data/db/.db and the -journal/-wal files are SQLite test databases; extension_external/httpfs/data/secrets/httpfs/.duckdb_secret are small fixtures for the secret parser; scripts/null.txt is a one-byte NUL fixture; test/api/serialized_plans/cases/.bin are plan fixtures each paired with the .sql that generates it.
- Prescan documents: extension_external/quack/rpc.pdf is a rendered plot, and its sources are shipped (plot.R, macbook.tsv, benchmarks/), so it is not a source-less binary document.
- Prescan licence wording:
api_spec/v2/function/aggregate.yaml:850,src/include/duckdb_v2.h:5608andtools/cpp/duckdb_cpp.hpp:4152(the source must not be modified) describe aggregate-state buffers, not licence terms;third_party/miniz/miniz.cpp:579commercial or non-commercialis the Unlicense public-domain dedication (free, but attribution is missing - see issue). - Prescan holders that are accounted for: Public Software Group e.V. is named in the utf8proc stanza (spelling variant); Melissa O'Neill is named as 'PCG Project contributors'; Yuji Hirose for third_party/httplib is named (the extension_external copy is not - see issue); Thomas Porschberg and Douglas Crockford appear only in third_party/thrift/thrift/LICENSE for files (aclocal m4, json_parse.js) that are not vendored; Twitter, Avro, Spark and Daniel Lemire appear only in third_party/parquet/LICENSE for Java/Spark sources that are not vendored; extension_external/mysql/src/include/mysql_version.h is public domain (
Copyright Abandoned ... This file is public domain); src/common/crypto/md5.cpp isno copyright is claimed(public domain). - Generated files have their preferred form in-tree: src/include/duckdb.h and duckdb_v2.h from api_spec/ via scripts/capi_v1_regen.sh and capi_v2_regen.sh (spec and templates shipped); extension/icu/datetime/generated/tz_data.cpp and collation/generated/collation_data.cpp from the shipped generate_/update_ scripts; third_party/parquet/parquet_types.* from the shipped parquet.thrift + generate.sh; extension/tpch/dbgen/include/tpch_constants.hpp from the shipped queries/*.sql.
- Not built by this package but present in the source: tools/swift (a Swift client), extension_external/{mysql,postgres,sqlite}/database-connector, extension_external/*/duckdb and extension-ci-tools (empty submodule directories), examples/ and .github/.
- Licence texts present in debian/copyright for Expat, BSD-2-Clause, BSD-3-Clause, BSL-1.0, Zlib and public-domain; Apache-2.0 and GPL-2+ point at files that exist under /usr/share/common-licenses.
- uscan found the packaged version as the newest upstream release (upstream
2.0.0, packaged2.0.0+dfsg). - Every pointer of
debian/copyrightto /usr/share/common-licenses names a file that is there (Apache-2.0,GPL-2).
Not confirmed
- The terms of the AdventureWorks, Chinook and Sakila sample data sets could not be checked offline; a licensee check of those files would settle whether the data is DFSG-free as well as unattributed.
- Whether dwz accepts
-L noneas passed by override_dh_dwz could not be checked (no dwz manual page installed); a build would show it. - Whether dh_shlibdeps records libpq5/libmariadb3 against the duckdb binary package for the hand-installed *.duckdb_extension files (they are ELF but not named *.so) could not be tested without a build.
Proposed changes
None.
Uploader's response to the LLM review
The uploader hasn't responded yet, and is welcome to at any time. The 24-hour hold has ended, so the package is now open for review as usual.
Review Information
accepted — allocated to awm 3 days ago, started 3 days ago, completed 3 days ago.
Final Comment
Superseded by review of later version