last thread: Node.js 22 starter
Packages: https://tmpnix-gsdrv.glitch.me/release/built.html
Recommended script for installing these packages: NAR Flinger, a package installer in a single script
NixOS 24.11 is out! Here’s the packages, and here’s what all happened in building those.
nodejs - that cross-compiling-related problem
Nixpkgs changed how they build Node.js, in theory. When cross-compiling, nodejs: use ninja for build by tie · Pull Request #327653 · NixOS/nixpkgs · GitHub they somehow use an emulator now instead of… I don’t know what. Cross compiling shouldn’t affect us, as we’re building on x86_64 Glitch for x86_64 Glitch.
To recap, the setup they had before was incorrectly causing a lot of Node.js to be built twice even when not cross-compiling.
Whatever this new setup does, it avoids this and, I believe, manages to compile things only once. (I didn’t actually check the logs. They just built fast enough for me not to worry.)
With this change, I was able to compile Node.js 22 without ccache, in about 7 hours. In fact that’s a little faster than the previous setup with ccache, which I had reported about 8 hours in a previous thread. And Node.js 20 built in only about 4 hours. I have not looked into why Node.js 22 takes about twice as long to build.
nodejs - new tests enabled
Some time after the NixOS 24.05 branch off, nodejs: run JS test suite as part of the checks · NixOS/nixpkgs@b26563a · GitHub Nixpkgs enabled more tests from Node.js.
Side note: [Backport release-24.05] nodejs recent updates by aduh95 · Pull Request #325550 · NixOS/nixpkgs · GitHub Nixpkgs maintainers decided not to backport that test enablement to 24.05, but it also did kind of get mixed in with another backport, so the change is mostly there but with a line commented out to prevent the tests from actually being included in the build.
Anyway, one test from this suite runs 80 Node.js processes. We have a limit of 512 process IDs on Glitch. I have found out that running node
uses about 11 process IDs. So that doesn’t fit, and that test fails.
I’ve added a patch to reduce that number of Node.js processes in that test.
A comment in that test file node/test/sequential/test-child-process-pass-fd.js at v18.20.5 · nodejs/node · GitHub suggests it was to check for a problem in “some OS X versions,” so we might be fine without such an exhaustive test here on Glitch with GNU/Linux.
bootstrap-tools
My feature addition to Nixpkgs to allow using custom bootstrap files is accepted, so now I can use a configuration file to specify the Glitch-compatible bootstrap files rather than patching the Nixpkgs expressions repository each time they update it.
To recap, we needed custom built bootstrap files because of Glitch’s old Linux kernel and idiosyncratic filtering for new unsupported system calls in its container runtime.
nix
Nix added a new test that doesn’t work right when compiling in our altered Nix store directory. I’ve submitted a patch to fix it tests: derivation-advanced-attributes unset NIX_STORE by wh0 · Pull Request #12012 · NixOS/nix · GitHub. A one-liner with like a page worth of PR description
edit: one more thing
nix - that one sandboxed test
There was a test that didn’t work right in our non-sandbox-supporting environment. I had previously submitted a fix for it, and it was accepted, but the last NixOS release didn’t update to the newer Nix. Now they have, so I was able to get rid of that overlay patch.
Getting this release working was pretty smooth. We lucked out with not having to fuss with any new glibc problems. Or maybe there are new problems, and we just don’t know about them yet. It’s only been a few days since the NixOS release. Good work, me.