.tar sorting vs .xz compression ratio
It is a pretty common knowledge that ordering of members within archive can affect the compression ratio. I’ve done some quick testing and the results somewhat surprised me. Firstly, it turned out that...
View ArticleHandy commands to clean up old ~arch-only packages
Here’s a bunch of handy commands that I’ve conceived to semi-automatically remove old versions of packages that do not have stable keywords (and therefore are not subject to post-stabilization cleanups...
View ArticleThe inconsistencies around Python package naming and the new policy
For a long time, the dev-python category in Gentoo did not follow any specific naming policy. Usually we went for what made the ebuild easier — the GitHub project name, if we happened to be using...
View ArticleNaming standards compliance of PEP517 backends
PyPA maintains two standards regarding packaging artifact filenames: Source distribution file name, approved via PEP 625 from 2020-07-08 Binary distribution file name convention, originally PEP 427...
View ArticleX-alpha hexadecimal notation
The most common way to represent hexadecimal (or any other base > 10) numbers is to use the first letters of alphabet for the extra digits. However, this doesn’t work well for my brain that insists...
View ArticleProblems faced when downstream testing Python packages
Downstream testing refers to the testing of software package done by their redistributors, such as Linux distributions. It could be done by distro-specific CI systems, package maintainers or — as it...
View ArticleMy thin wrapper for emerge(1)
I’ve recently written a thin wrapper over emerge that I use in my development environment. It does the following: set tmux pane title to the first package argument (so you can roughly see what’s...
View ArticleA script to set file timestamps based on filenames
I’ve noticed that SyncThing didn’t seem to preserve modification timestamps for the photos and videos transferred from my phone. Since this messed up sorting by date, and the timestamps are present in...
View ArticleA format that does one thing well or one-size-fits-all?
The Unix philosophy states that we ought to design programs that “do one thing well”. Nevertheless, the current trend is to design huge monoliths with multiple unrelated functions, with web browsers at...
View ArticleThe story of distutils build directory in Gentoo
The Python distutils build system, as well as setuptools (that it was later merged into), used a two-stage build: first, a build command would prepare a built package version (usually just copy the .py...
View ArticleOptimizing parallel extension builds in PEP517 builds
The distutils (and therefore setuptools) build system supports building C extensions in parallel, through the use of -j (--parallel) option, passed either to build_ext or build command. Gentoo...
View ArticleThe dead weight of packages in Gentoo
You’ve probably noticed it already: Gentoo developers are overwhelmed. There is a lot of unresolved bugs. There is a lot of unmaintained packages. There is a lot of open pull requests. This is all...
View ArticleThe review-work balance, and other dilemmas
One of the biggest problems of working in such a large project as Gentoo, is that there’s always a lot of work to be done. Once you get engaged deeply enough, no matter how hard you’re going to try,...
View ArticleOptimizing distutils-r1.eclass via wheel reuse
Yesterday I’ve enabled a new distutils-r1.eclass optimization: wheel reuse. Without this optimization, the eclass would build a separate wheel for every Python implementation enabled, and then install...
View ArticleGentoo: profiles and keywords rather than releases
Different distributions have different approaches to releases. For example, Debian simultaneously maintains multiple releases (branches). The “stable” branch is recommended for production use,...
View ArticleOverview of cross-architecture portability problems
Ideally, you’d want your program to work everywhere. Unfortunately, that’s not that simple, even if you’re using high-level “portable” languages such as Python. In this blog post, I’d like to focus on...
View ArticleThe perils of transition to 64-bit time_t
(please note that there’s a correction at the bottom) In the Overview of cross-architecture portability problems, I have dedicated a section to the problems resulting from use of 32-bit time_t type....
View ArticleTesting the safe time64 transition path
Recently I’ve been elaborating on the perils of transition to 64-bit time_t, following the debate within Gentoo. Within these deliberations, I have also envisioned potential solutions to ensure that...
View ArticleThe peculiar world of Gentoo package testing
While discussing uv tests with Fedora developers, it occurred to me how different your average Gentoo testing environment is — not only from these used upstream, but also from these used by other Linux...
View ArticlePoetry(-core), or the ultimate footgun
I’ve been complaining about the Poetry project a lot, in particular about its use (or more precisely, the use of poetry-core) as a build system. In fact, it pretty much became a synonym of a footgun...
View Article