quill as Ubuntu package
Given that quill is not directly available through official Ubuntu repos, is there a Personal Package Archives (PPA) that one can find it? It would be super-handy instead of having to build it from source.
Currently not, it is a header only library so all you need is to copy the include folder of this repo, you do not need to build anything.
It is available on multiple package managers https://github.com/odygrd/quill?tab=readme-ov-file#installation
I see; the downside is that, since they are included directly into the project's source files, they are compiled using the project's compiler flags.
Yes, but the library is designed to be warning-free without requiring special flags—considerable effort has been put into that.
For better compile times, you can build the backend as a separate library and share it across translation units using a quill_wrapper library.
The frontend remains header-only due to its reliance on templates and for performance reasons.
I submitted a Debian package request a while ago, but since they only accept packages from existing maintainers, I don’t think it will make it there soon. For anyone interested, here’s the process: Debian WNPP Requested Packages.
Hi, I’m Shahrukh from OSS Revival. We specialize in revitalizing and maintaining open-source projects for long-term stability.
I’m interested in packaging this project for Debian and intend to contribute by preparing and maintaining it within the Debian ecosystem.
Hey Shahrukh, that sounds amazing—really appreciate it! You can use the latest release, 8.2.0, instead of the older version in that request. The library is header-only, so packaging should be straightforward. Let me know if you need any info—I’d be happy to help with anything needed. Thanks!
Hi, I am pretty much done with debian packaging. Will be working on the CI aspect of the packaging. Debian supports multi arch (amd64, arm64, armel,armhf, i386, loong64, ppc64el, riscv64 and s390x).
I have verified the package installation and also tested some demo applications using cmake find package and pkgconfig. For pkgconfig i had to add a debian package patch as it was being installed /usr path directly. I will be creating a PR for pkgconfig path fix in CMakeLists.txt.
Screenshot for package warnings.
- https://lintian.debian.org/tags/newer-standards-version (can be ignored)
- https://lintian.debian.org/tags/repeated-path-segment
- https://lintian.debian.org/tags/debian-watch-does-not-check-openpgp-signature
- https://lintian.debian.org/tags/duplicate-files
- https://lintian.debian.org/tags/very-long-line-length-in-source-file
Most of the issue are self explanatory, for point 3 please enable signed archives and share your gpg key which i can place in debian packaging.
Point 2-4 are most important to be fixed, while if all the warning are removed this will hopefully ensure smooth sponsorship of the package :-).
Thank you for your support.
thank you so much for doing this @Syed-Shahrukh-OSSRevival ! I am going to look into those issues in the following days
I’ve addressed most of the warnings in this PR:
https://github.com/odygrd/quill/pull/713
A few questions:
-
Would it be possible to exclude the
docsfolder from packaging? I believe it makes sense to exclude it, as some warnings—like the long lines in the draw.io file—don’t seem relevant to packaging. -
Regarding point 3 (OpenPGP signature verification), would it be possible to skip this requirement? Signing each release would introduce an extra manual step, which I'd prefer to avoid. Many established libraries don’t require this, and given that Quill is a logging library rather than a security-critical component like a database, I believe it should be fine without it.
-
If you decide to run the tests after package installation, please avoid running the full test suite. Some tests are highly detailed and take a long time to complete. Instead, I recommend running a single test:
ctest --build-config Release --output-on-failure -R "^multi_frontend_threads$".
This should provide a reasonable verification without excessive runtime overhead.
Thanks again for your help!
Thank you for providing the fixes.
- This is experimental. Debian package itself is only the debian folder, while the package original is the tar file that is downloaded from the upstream. I can apply small patches to fix bug etc, while AFAIK any structural changes are not possible. I tried to make a patch to remove docs but the build failed.
dpkg-source: info: if patch '002_docs_rem.patch' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: info: if the file is present in the unpacked source, make sure it is also present in the orig tarball
dpkg-source: info: restoring quilt backup files for 002_docs_rem.patch
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/002_docs_rem.patch/ --reject-file=- < quill/debian/patches/002_docs_rem.patch subprocess returned exit status 1
gbp:error: 'git-pbuilder' failed: it exited with 2
- Well this is experimental. Most newer packages have signing. This ensure package download are authentic, no change in the middle.
- I hadn't planned to add the tests, I will now :-)
Hey,
I've fixed the remaining warnings in the docs folder—hopefully, everything is now good on master.
I understand your point about GPG-signed releases, but for a header-only logging library, it feels like overkill. Every time I make a release, I’d have to download the tarball, sign it with my GPG key, and then upload the additional .asc file. It just adds an extra step for each release, which I’d prefer to avoid if possible.
Regarding the tests, it's up to you. You can run a single test for verification, or none at all—it should still be fine.
Once you're happy with the current master, I’m happy to tag a new release so you can package it. That way, we can include any fixes you need, like the pkgconfig path.
Let me know how you'd like to proceed!
Thank you for addressing the issues,
Yes it is possible to package without GPG signatures.
Sounds perfect, I will get back to with packaging results of current master.
There were few remaining for which I am creating a PR for your review.
The last remaining is README.md which is an svg, I will remove this through a patch on debian side.
Thanks for the PR! It seems that lintian is not friendly to libname/include/libname which is a common pattern for cmake libraries but it’s okay. I removed the nested directories completely for the examples in master to simplify further, hopefully it still works without warnings after my changes
Yes it get bit complex with debian packaging standards and multiple number tools to do the same thing. So have to test everything to be 100% sure.
I tested out my patch for README.md:26 627 > 512, debian linter does not even let the patch have longer line :-) so no use of patch.
W: quill source: newer-standards-version 4.7.2 (current is 4.7.0)
I: quill source: quilt-patch-missing-description [debian/patches/001-remove-windows-badge.patch]
X: quill source: debian-watch-does-not-check-openpgp-signature [debian/watch]
X: quill source: very-long-line-length-in-source-file 628 > 512 [debian/patches/001-remove-windows-badge.patch:9]
README.md:26 is using windows logo in svg.
For me the current build is good enough for packaging.
Thank you for your cooperation!
hey @Syed-Shahrukh-OSSRevival : ) Release is now tagged please try to package it when you have a chance
Thank you for making the release! Sure I will working on it.
@Syed-Shahrukh-OSSRevival if possible please use 9.0.2 there was a very minor fix! Thank you
Repo: https://salsa.debian.org/Syed-Shahrukh-OSSRevival/quill Package: https://mentors.debian.net/package/quill/ RFS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103390