| 13 Oct 2025 |
matthewcroughan @fosdem | https://github.com/NixOS/nixpkgs/pull/451665 | 12:52:29 |
matthewcroughan @fosdem | Next! | 13:15:36 |
matthewcroughan @fosdem | https://cache.nixos.org/azkr6fkw861j987imi4k5y0abvqi1b7c.narinfo
https://cache.nixos.org/8ggn6daw4hjxdlbcna9q2535890ykjii.narinfo
https://cache.nixos.org/azkr6fkw861j987imi4k5y0abvqi1b7c.narinfo
https://cache.nixos.org/8ggn6daw4hjxdlbcna9q2535890ykjii.narinfo
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing setuptools-build-hook
Using setuptoolsBuildPhase
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Running phase: unpackPhase
@nix {"action":"setPhase","phase":"unpackPhase"}
unpacking source archive /nix/store/1y46kvp3g2w9lvgjwm16anbgj1fbxhw6-fb-re2-1.0.7.tar.gz
source root is fb-re2-1.0.7
setting SOURCE_DATE_EPOCH to timestamp 1549563635 of file "fb-re2-1.0.7/setup.cfg"
Running phase: patchPhase
@nix {"action":"setPhase","phase":"patchPhase"}
applying patch /nix/store/2ynhdqagqhhgiwwp42vs2k1rbzg4hk16-08fb06ec3ccd412ca69483d27234684a04cb91a0.patch
patching file setup.py
Hunk #1 succeeded at 21 (offset -1 lines).
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix {"action":"setPhase","phase":"updateAutotoolsGnuConfigScriptsPhase"}
Running phase: configurePhase
@nix {"action":"setPhase","phase":"configurePhase"}
no configure script, doing nothing
Running phase: buildPhase
@nix {"action":"setPhase","phase":"buildPhase"}
Executing setuptoolsBuildPhase
setup.py build flags: ''
/nix/store/i8dj359n8kpcqnf8smx04i2w79pdswpd-python3.13-setuptools-80.9.0/lib/python3.13/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg)
/nix/store/i8dj359n8kpcqnf8smx04i2w79pdswpd-python3.13-setuptools-80.9.0/lib/python3.13/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!
********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:
License :: OSI Approved :: BSD License
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
!!
self._finalize_license_expression()
running bdist_wheel
running build
running build_py
creating build/lib.linux-aarch64-cpython-313
copying re2.py -> build/lib.linux-aarch64-cpython-313
running build_ext
building '_re2' extension
creating build/temp.linux-aarch64-cpython-313
g++ -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/nix/store/5grqzcflpanpjl31siiz168y8mwmv9jl-python3-3.13.8/include/python3.13 -c _re2.cc -o build/temp.linux-aarch64-cpython-313/_re2.o -std=c++17
_re2.cc:252:1: error: cannot convert ‘std::nullptr_t’ to ‘Py_ssize_t’ {aka ‘long int’} in initialization
252 | };
| ^
_re2.cc:296:1: error: cannot convert ‘std::nullptr_t’ to ‘Py_ssize_t’ {aka ‘long int’} in initialization
296 | };
| ^
_re2.cc:340:1: error: cannot convert ‘std::nullptr_t’ to ‘Py_ssize_t’ {aka ‘long int’} in initialization
340 | };
| ^
_re2.cc:870:1: warning: ‘PyObject* regexp_set_new(PyTypeObject*, PyObject*, PyObject*)’ defined but not used [-Wunused-function]
870 | regexp_set_new(PyTypeObject* type, PyObject* args, PyObject* kwds)
| ^~~~~~~~~~~~~~
_re2.cc:195:1: warning: ‘int _no_setattr(PyObject*, PyObject*, PyObject*)’ defined but not used [-Wunused-function]
195 | _no_setattr(PyObject* obj, PyObject* name, PyObject* v) {
| ^~~~~~~~~~~
error: command '/nix/store/hfiszd1qvqa0mbpj176s5ym4wpmk4nwx-gcc-wrapper-14.3.0/bin/g++' failed with exit code 1
| 13:15:38 |
matthewcroughan @fosdem | Ihar Hrachyshka: Do you know why musl static might fail with llvm now? | 13:55:24 |
matthewcroughan @fosdem | Like this https://hercules-ci.com/accounts/github/MatthewCroughan/derivations/%2Fnix%2Fstore%2Fqk942ikx3lr5wvkwycizc4xvhj8pykwf-musl-static-aarch64-unknown-linux-musl-1.2.5.drv/log?via-job=bfdba484-5299-4137-89f5-0a94331faf96 | 13:55:53 |
matthewcroughan @fosdem | collect2: fatal error: cannot find 'ld' | 13:56:00 |
Ihar Hrachyshka | no idea. I'm not really a cross expert... :) | 13:56:35 |
matthewcroughan @fosdem | this isn't cross | 13:56:41 |
matthewcroughan @fosdem | this is native | 13:56:42 |
matthewcroughan @fosdem | cross works fine | 13:56:56 |
matthewcroughan @fosdem | I have a full pkgs.nixos {} building with cross, both llvm/musl, but now I'm tackling the native case | 13:57:18 |
Ihar Hrachyshka | I think musl is cross in a way - you cross build musl binaries with glibc build packages. It's just not arch cross.
(maybe I'm using terms incorrectly though)
| 13:57:30 |
matthewcroughan @fosdem | Untrue in this case | 13:57:40 |
matthewcroughan @fosdem | I've already done the cross case | 13:57:44 |
matthewcroughan @fosdem | pkgsMusl is musl -> musl | 13:57:51 |
matthewcroughan @fosdem | nixosConfigurations.gnu-musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.gnu-musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
nixosConfigurations.musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
| 13:58:08 |
matthewcroughan @fosdem | * nixosConfigurations.gnu-musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.gnu-musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-gnu");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
nixosConfigurations.musl = nixosConfigurations.base.extendModules {
modules = [
./musl.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {};
}
];
};
nixosConfigurations.musl-llvm = nixosConfigurations.base.extendModules {
modules = [
./musl-llvm.nix
{
nixpkgs.buildPlatform = (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl");
nixpkgs.hostPlatform = inputs.nixpkgs.lib.recursiveUpdate (inputs.nixpkgs.lib.systems.elaborate "aarch64-unknown-linux-musl") {
useLLVM = true;
linker = "lld";
config = "aarch64-unknown-linux-musl";
};
}
];
};
| 13:58:14 |
Ihar Hrachyshka | ah I see. I haven't looked at non-static musl, only pkgsStatic (which I believe is glibc->musl cross). anyway, I'm not of help. | 13:58:34 |
matthewcroughan @fosdem | well musl-static is the thing that's failing | 13:59:13 |
matthewcroughan @fosdem | so is that not related to pkgsStatic? | 13:59:19 |
Ihar Hrachyshka | pkgsStatic is musl static. (I'm confused.) | 13:59:36 |
matthewcroughan @fosdem | The name of the derivation that is failing is musl-static-aarch64-unknown-linux-musl | 14:00:01 |
matthewcroughan @fosdem | musl-static | 14:00:05 |
matthewcroughan @fosdem | pkgsMusl.pkgsStatic.musl is the reproducer | 14:00:54 |
matthewcroughan @fosdem | IDK why this ends up in the dependency graph | 14:01:33 |
matthewcroughan @fosdem |  Download image.png | 14:02:48 |
matthewcroughan @fosdem | looks like somehow the gcc-wrapper needs it | 14:03:02 |
matthewcroughan @fosdem | pkgsStatic.pkgsLLVM.musl builds just fine | 14:06:19 |
rosssmyth | While the APIs that are being used for ${program}.withPackages pattern is very nice and egronomic, it does have a downside of not using a spliced package. So for example recently I needed Python with a package in nativeBuildInputs, but then when cross-compiled it only has Python from pkgsHostTarget, leading to an invalid executable being used at build time and then either manually using pkgsBuildBuild.python or using the spliced Python and package separately.
I wonder if there is a good way to solve this? Meaning a way to use the spliced package, as for folks not in the know of splicing it is probably confusing to see a package operate differently based upon whether you use the helpers or not. But many of these helpers are implemented with finalAttrs.finalPackage, which isn't spliced.
| 18:00:49 |
Sandro | Can someone look at https://github.com/NixOS/nixpkgs/pull/447492 for the correct splice setup? | 22:31:54 |