Review: fmtlib 12.1.0+ds1-1
Package Information
| Description | fast type-safe C++ formatting library -- development files This library provides fast, type-safe, small, C++11-aware replacement of (s)printf and related machinery. In some cases it's noticeably faster than boost::format, boost::lexical_cast and even sprintf itself. This package contains the development files, include the static library. |
|---|---|
| Maintainer | Shengjing Zhu <zhsj@debian.org> |
| Changed By | Shengjing Zhu <zhsj@debian.org> |
| Sponsor | zhsj@debian.org |
| Distribution | experimental |
| Architecture | any all |
| VCS | git: https://salsa.debian.org/zhsj/fmtlib.git (browse) |
| Closes | #1149808 |
| Popcon Installs | 53308 |
| Binary NEW | Yes (new binary packages of a source already in sid) |
| Tracker | https://tracker.debian.org/pkg/fmtlib |
| Uploaded | 1 month, 1 day ago |
New Package Report
.changes
| Source | fmtlib |
|---|---|
| Version | 12.1.0+ds1-1 |
| Changed-By | Shengjing Zhu <zhsj@debian.org> |
| Architecture | source amd64 all |
| Distribution | experimental |
| Date | Thu, 08 Oct 2026 02:59:21 +0800 |
Changelog
fmtlib (12.1.0+ds1-1) experimental; urgency=medium . * New upstream version 12.1.0+ds1 * Update SO version to 12. * Update d/copyright. * Define nodoc and nocheck build profiles. (Closes: #1149808)
.dsc
| Priority | optional |
|---|---|
| Component | main |
| Package-List | libfmt-dev deb libdevel optional arch=any libfmt-doc deb doc optional arch=all profile=!nodoc profile:v1=!nodoc libfmt12 deb libs optional arch=any |
| Section | libdevel |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: fmt
Source: https://github.com/fmtlib/fmt
Files-Excluded:
.github
doc/python-license.txt
support/Android*
support/C++.sublime-syntax
support/README
support/Vagrantfile
support/build.gradle
support/docopt.py
support/manage.py
support/printable.py
test/gtest
Files: *
Copyright: 2012-present Victor Zverovich and {fmt} contributors
License: Expat with embedded exception
Files: include/fmt/chrono.h
test/fuzzing/build.sh
test/fuzzing/CMakeLists.txt
test/fuzzing/one-arg.cc
test/fuzzing/chrono-duration.cc
test/fuzzing/two-args.cc
test/fuzzing/fuzzer-common.h
test/fuzzing/chrono-timepoint.cc
test/fuzzing/named-arg.cc
Copyright: 2019 Paul Dreik
License: Expat with embedded exception
Files: support/cmake/JoinPaths.cmake
Copyright: 2020 Jan Tojnar
License: Expat or CC0-1.0
Files: debian/*
Copyright: 2020 Shengjing Zhu <zhsj@debian.org>
License: Expat
License: Expat with embedded exception
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.
.
--- Optional exception to the license ---
.
As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into a machine-executable object form of such
source code, you may redistribute such embedded portions in such object form
without including the above copyright and permission notices.
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: CC0-1.0
On Debian systems, the complete text of the CC0 1.0 license can be found in
/usr/share/common-licenses/CC0-1.0
Review Information
accepted — allocated to awm 1 month, 1 day ago, started 1 month, 1 day ago, completed 1 month, 1 day ago.
Final Comment
Hi,
Minor issues - please fix on your next upload.
1 (real, accuracy): include/fmt/chrono.h is wrongly attributed in debian/copyright. The stanza beginning at Files: include/fmt/chrono.h … test/fuzzing/… declares Copyright: 2019 Paul Dreik and, being later than Files: *, overrides it for chrono.h. But include/fmt/chrono.h:2-4 reads // Copyright (c) 2012 - present, Victor Zverovich / All rights reserved. — Zverovich is the file's holder, with a safe_duration_cast sub-section at chrono.h:38 attributed Copyright Paul Dreik 2019. As written, Debian's records list only Paul Dreik for a Zverovich header. Fix: drop include/fmt/chrono.h from the Dreik stanza (it then falls under the Zverovich catch-all) and optionally note the Dreik source of the safe_duration_cast block there. (Year drift on chrono-timepoint.cc says 2021 vs 2019 — noted, not worth changing.)
2 (real, completeness): the shipped documentation carries PSF terms that debian/copyright neither lists nor provides text for. README.md "# Documentation License" states the Format String Syntax section derives from Python's string module docs and "is distributed under the Python Software Foundation license available in doc/python-license.txt". doc/syntax.md indeed reproduces the Python "Format Specification Mini-Language" grammar and prose more or less verbatim (e.g. syntax.md:76-93). Debian ships this doc in libfmt-doc, but the PSF text (doc/python-license.txt) is listed in Files-Excluded and removed, and no PSF stanza is in the copyright file. The PSF licence is DFSG-free and lives in /usr/share/common-licenses/PSF, so this is not a DFSG violation — but the file is incomplete. Fix: add a Files: doc/* (or doc/syntax.md) stanza with Copyright: 2012-present Victor Zverovich and {fmt} contributors and License: Expat... + a PSF reference (common-licenses), or keep the PSF text instead of excluding it.
Some nits that you may want to also address...
-
watch file: version 4 (debian/watch:1). One-sentence note: it should be converted to version 5. Syntax reviewed otherwise: it targets fmtlib/fmt tags, dversionmangle=auto + repacksuffix=+ds1 correctly yield 12.1.0+ds1 matching the changelog, and Files-Excluded is present, so the +ds1 suffix is consistent. No debian/upstream/ metadata or signing key; acceptable.
-
Minor — debian/patches/0003-mkdocstrings.patch lacks DEP-3 Forwarded:/Description: (the other two have Forwarded: not-needed). The patch is a 267/148-line rewrite of the cxx handler to adapt to mkdocstrings 1.0 (#1135498); it is a genuine compatibility fix that should be forwarded upstream, currently unlabeled.
-
Minor/real — the shipped docs reference an external CDN. support/mkdocs.yml sets extra_javascript: https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/highlight.min.js (and matching extra_css), and use_pygments: false makes the HTML rely on that JS. The built libfmt-doc pages therefore embed links to cdnjs.cloudflare.com — a privacy/offline concern for shipped docs. [INFERENCE] standard mkdocs behaviour; not executed. Fix: patch mkdocs.yml to drop the CDN entries (and enable Pygments for highlighting).
-
Minor — debian/doxygen.conf is dead. Nothing in debian/ or the build references it; the mkdocstrings cxx handler now generates its own doxygen config inline (support/python/mkdocstrings_handlers/cxx/init.py:261-305), writing XML to build/doxyxml. Leftover from the Sphinx-era build.
-
Minor/cosmetic — libfmt-dev Description says "include the static library" but rules sets BUILD_SHARED_LIBS=on and only libfmt.so is installed; no static archive is built. Stale upstream text; harmless.
Thanks!