| 14 Feb 2025 |
Artturin | Compilers in pkgsBuildBuild compile for build platform
Compilers in pkgsBuildHost compile for host platform | 18:14:48 |
Artturin | https://nixos.org/manual/nixpkgs/unstable/#var-stdenv-depsBuildBuild | 18:18:23 |
@rosssmyth:matrix.org | Cool, thanks for your help. | 18:18:52 |
Artturin | rosssmyth: https://github.com/NixOS/nixpkgs/pull/382110 | 18:23:20 |
emily | you shouldn't need to explicitly specify the package set | 18:29:02 |
emily | splicing ensures that depsBuildBuild = [ srecord ]; should do the right thing | 18:29:11 |
Artturin | (callPackage has spliced packages so you don't have to specify the set) | 18:29:45 |
@rosssmyth:matrix.org | Oh, I see. | 18:33:03 |
@rosssmyth:matrix.org | Then for the compiler itself, is there a way I can override the gcc wrapper settings? Currently it is compiling in ARM mode, while it needs to be in thumb. I once again tried a custom nixpkgs instance with
armPkgs = import nixpkgs {
inherit system;
crossSystem = {
config = "arm-none-eabi";
libc = "newlib";
gcc = {
arch = "armv6m";
cpu = "cortex-m0";
};
};
};
But that starts recompiling all of gcc again. I see this setting https://github.com/NixOS/nixpkgs/blob/b44babb85a1294e6b0e20ccc2c54cd0f62a84ceb/pkgs/build-support/cc-wrapper/default.nix#L248
Which is pretty much what I want.
| 18:49:17 |
@rosssmyth:matrix.org | * Then for the compiler itself, is there a way I can override the gcc wrapper settings? Currently it is compiling in ARM mode, while it needs to be in thumb. I once again tried a custom nixpkgs instance with
armPkgs = import nixpkgs {
inherit system;
crossSystem = {
config = "arm-none-eabi";
libc = "newlib";
gcc = {
arch = "armv6m";
cpu = "cortex-m0";
thumb = true;
};
};
};
But that starts recompiling all of gcc again. I see this setting https://github.com/NixOS/nixpkgs/blob/b44babb85a1294e6b0e20ccc2c54cd0f62a84ceb/pkgs/build-support/cc-wrapper/default.nix#L248
Which is pretty much what I want.
| 18:51:25 |
Artturin | the rebuilds are because you specified arch and cpu | 18:56:44 |
Artturin | Redacted or Malformed Event | 18:56:47 |
Artturin |  Download image.png | 18:56:52 |
Artturin | here's a nix-diff | 18:56:57 |
Artturin | I'm not sure if gcc really needs those 2 flags because cc-wrapper has -mcpu and -march | 18:59:19 |
@rosssmyth:matrix.org | Yeah that's what I was hoping it would set 😅. | 19:00:10 |
Artturin | stdenv = overrideCC stdenv (buildPackages.wrapCC (stdenv.cc // { stdenv.cc.targetPlatform = stdenv.cc.targetPlatform // { gcc = stdenv.cc.targetPlatform.gcc // { arch = "arv6m"; cpu = "cortex-m0"; thumb = true; }; }; })) | 19:07:09 |
Artturin | * stdenv = overrideCC stdenv (buildPackages.wrapCC (stdenv.cc // { stdenv.cc.targetPlatform = stdenv.cc.targetPlatform // { gcc = stdenv.cc.targetPlatform.gcc // { arch = "arv6m"; cpu = "cortex-m0"; thumb = true; }; }; })); | 19:07:11 |
Artturin | Should work if the gcc flags aren't really needed | 19:08:06 |
Artturin | * Should work if the gcc build flags aren't really needed | 19:08:51 |
@rosssmyth:matrix.org | If I put that in my default.nix it results in an infinite recursion. My plan with this is to be able to build for both the armv6m target and my x86 host as I have tests that meson runs as well. I am currently using the arm-embedded-gcc packages in a noCC derivation. | 19:17:36 |
Artturin | Change the variable name or put it in the callPackage overrides | 19:18:36 |
Artturin | callPackage ./file.nix { <here> | 19:18:47 |
Artturin | * callPackage ./file.nix { <here> } | 19:18:49 |
@rosssmyth:matrix.org | It still errors with infinite recursion. I have it setup as
highPower = with armPkgs;
callPackage ./default.nix {
stdenv = with pkgs;
overrideCC stdenv (buildPackages.wrapCC (stdenv.cc
// {
stdenv.cc.targetPlatform =
stdenv.cc.targetPlatform
// {
gcc =
stdenv.cc.targetPlatform.gcc
// {
arch = "arv6m";
cpu = "cortex-m0";
thumb = true;
};
};
}));
};
| 20:04:05 |
@rosssmyth:matrix.org | oh wait | 20:04:14 |
@rosssmyth:matrix.org | I think I see the error | 20:04:26 |
@rosssmyth:matrix.org | * It still errors with infinite recursion. I have it setup as
highPower = with armPkgs;
callPackage ./default.nix {
stdenv =
overrideCC stdenv (buildPackages.wrapCC (stdenv.cc
// {
stdenv.cc.targetPlatform =
stdenv.cc.targetPlatform
// {
gcc =
stdenv.cc.targetPlatform.gcc
// {
arch = "arv6m";
cpu = "cortex-m0";
thumb = true;
};
};
}));
};
| 20:05:06 |
@rosssmyth:matrix.org | No, I don't | 20:06:35 |
Artturin | Look through the trace | 20:17:09 |