!ayCRiZriCVtuCUpeLp:nixos.org

Nix Cross Compiling

581 Members
128 Servers

Load older messages


SenderMessageTime
13 Oct 2025
@ihar.hrachyshka:matrix.orgIhar 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:defenestrate.itmatthewcroughan @fosdemUntrue in this case13:57:40
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemI've already done the cross case13:57:44
@matthewcroughan:defenestrate.itmatthewcroughan @fosdem pkgsMusl is musl -> musl 13:57:51
@matthewcroughan:defenestrate.itmatthewcroughan @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:defenestrate.itmatthewcroughan @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:matrix.orgIhar Hrachyshkaah 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:defenestrate.itmatthewcroughan @fosdemwell musl-static is the thing that's failing13:59:13
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemso is that not related to pkgsStatic?13:59:19
@ihar.hrachyshka:matrix.orgIhar Hrachyshka pkgsStatic is musl static. (I'm confused.) 13:59:36
@matthewcroughan:defenestrate.itmatthewcroughan @fosdem The name of the derivation that is failing is musl-static-aarch64-unknown-linux-musl 14:00:01
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemmusl-static14:00:05
@matthewcroughan:defenestrate.itmatthewcroughan @fosdem pkgsMusl.pkgsStatic.musl is the reproducer 14:00:54
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemIDK why this ends up in the dependency graph 14:01:33
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemimage.png
Download image.png
14:02:48
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemlooks like somehow the gcc-wrapper needs it14:03:02
@matthewcroughan:defenestrate.itmatthewcroughan @fosdem pkgsStatic.pkgsLLVM.musl builds just fine 14:06:19
@rosssmyth:matrix.orgrosssmyth

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:supersandro.deSandroCan someone look at https://github.com/NixOS/nixpkgs/pull/447492 for the correct splice setup?22:31:54
@hexa:lossy.networkhexa also #windows:nixos.org maybe 23:11:28
14 Oct 2025
@sandro:supersandro.deSandroI did not know we had a room for that13:36:20
@ulysseszhan:matrix.orgUlyssesZhan joined the room.23:34:39
15 Oct 2025
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemI haven't had any reviews on my musl/llvm PRs yet17:15:14
@matthewcroughan:defenestrate.itmatthewcroughan @fosdem
  • https://github.com/NixOS/nixpkgs/pull/451665
  • https://github.com/NixOS/nixpkgs/pull/451147
  • https://github.com/NixOS/nixpkgs/pull/447166
  • https://github.com/NixOS/nixpkgs/pull/445833
17:15:37
@matthewcroughan:defenestrate.itmatthewcroughan @fosdemAny takers?17:15:40
@stas:mainframe.lvStashey! I am cross-compiling armv7 systems, and wondered are there any caches with armv7 stuff in them? Or a cache that is willing to accept uploads from me on the armv7 base system?17:33:30
@stas:mainframe.lvStasi am using mine for Olimex Lime to act as a restic backup server17:34:02
@k900:0upti.meK900No official ones17:42:23
@k900:0upti.meK900 @misuzu had something 17:42:27
@k900:0upti.meK900But generally armv7 is not an interesting target17:42:33

Show newer messages


Back to Room ListRoom Version: 6