From 7a7eb762620cba3f36aca998c1a865378124a7c8 Mon Sep 17 00:00:00 2001 From: RGBCube Date: Sun, 20 Jul 2025 00:08:56 +0300 Subject: [PATCH] dump(build-systems.no-gnulib): move to blog --- .../2025-07-20-no-gnulib.md} | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) rename site/{dump/build-systems/no-gnulib.md => blog/2025-07-20-no-gnulib.md} (94%) diff --git a/site/dump/build-systems/no-gnulib.md b/site/blog/2025-07-20-no-gnulib.md similarity index 94% rename from site/dump/build-systems/no-gnulib.md rename to site/blog/2025-07-20-no-gnulib.md index 7413af3..91b24a0 100644 --- a/site/dump/build-systems/no-gnulib.md +++ b/site/blog/2025-07-20-no-gnulib.md @@ -1,7 +1,6 @@ --- title: Say NO to Gnulib description: ...and Debian. -date: 2025-07-19 --- If you are a GNU maintainer and are not willing to be critizied by people sick @@ -38,7 +37,7 @@ of Gnulib. I do however trust the average distro (not Debian, they are lower than average and suck at packaging [(Yes, really.)](#debian-sucks-at-packaging) to build Uutils tools & any other Rust tool correctly, because it is pretty relatively -straightforward compared to hundreds of thounsands of lines of ancient m4. Much +straightforward compared to hundreds of thousands of lines of ancient m4. Much easier to audit too & it doesn't misbehave or segfault. I hope Uutils coreutils & Uutils findutils and so on achieves near perfect @@ -85,11 +84,12 @@ and you should not be anyway. The way you should package any programming language that has a widely used and generally well-defined and static build system is to generate (unlisted) package definitions from packages using a script or tool (such as -`cargo metdata -> parse json -> puke out package manifests`), and only add extra -configuration to packages that depend on anything external (such as a C library, -or CMake, or perl, or Go for some godforsaken reason (Why, `aws-lc-sys`, why?)). +`cargo metadata -> parse json -> puke out package manifests`), and only add +extra configuration to packages that depend on anything external (such as a C +library, or CMake, or perl, or Go for some godforsaken reason (Why, +`aws-lc-sys`, why?)). -It's also not hard to use a dependency solver algoritm to try and deduplicate +It's also not hard to use a dependency solver algorithm to try and deduplicate all crates required in the whole package repository using a pre-made library, such as [`lib.rs/pubgrub`](https://lib.rs/crates/pubgrub). You can have the best of all worlds. @@ -133,12 +133,12 @@ derivations (build units, but in a fancy Nix / Functional Software Deployment Model way), these generated definitions won't pollute search or interfere with users. It's just a plus in almost every way imagineable.[^A negative would be the sandbox creation overhead of `nix-daemon`, but that shouldn't be significant -most of Rust builds from scratch, and for those that are, the already-cached +for most of Rust builds from scratch, and for those that are, the already-cached crates will mitigate the losses pretty easily.]
-You can actaully use this right now with +You can actually use this right now with [`cargo2nix`](https://github.com/cargo2nix/cargo2nix) or [`crate2nix`](https://github.com/nix-community/crate2nix), though expect some headaches. (I recently spent a few hours getting `crate2nix` to work on a huge