per-system-optim/nixpkgs/nixpkgs.patch

119 lines
5.1 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff --git a/lib/systems/architectures.nix b/lib/systems/architectures.nix
index 94127fa9..5253e4bb 100644
--- a/lib/systems/architectures.nix
+++ b/lib/systems/architectures.nix
@@ -32,9 +32,24 @@ rec {
armv5te = [ ];
armv6 = [ ];
armv7-a = [ ];
- armv8-a = [ ];
+ armv8-a = [ "fp" "simd" ];
+ "armv8.1-a" = [ "crc" "lse" "rdma" ] ++ features.armv8-a;
+ "armv8.2-a" = features."armv8.1-a";
+ "armv8.3-a" = [ "pauth" ] ++ features."armv8.2-a";
+ "armv8.4-a" = [ "flagm" "fp16fml" "dotprod" ] ++ features."armv8.3-a";
+ "armv8.5-a" = [ "sb" "sbss" "predres" ] ++ features."armv8.4-a";
+ "armv8.6-a" = [ "bf16" "i8mm" ] ++ features."armv8.5-a";
+ "armv8.7-a" = [ "ls64" ] ++ features."armv8.6-a";
+ "armv8.8-a" = [ "mops" ] ++ features."armv8.7-a";
+ "armv9-a" = [ "sve" "sve2" ] ++ features."armv8.5-a";
+ "armv9.1-a" = [ "bf16" "i8mm" ] ++ features."armv9-a";
+ "armv9.2-a" = [ "ls64" ] ++ features."armv9.1-a";
+ "armv9.3-a" = [ "mops" ] ++ features."armv9.2-a";
mips32 = [ ];
loongson2f = [ ];
+ riscv64-g = [ "multiply" "atomic" "float" "double" "csr" "ifencei" ];
+ riscv64-gc = [ "compressed" ] ++ features.riscv64-g;
+ riscv64-gcv = [ "vector" ] ++ features.riscv64-gc;
};
# a superior CPU has all the features of an inferior and is able to build and test code for it
@@ -85,8 +100,23 @@ rec {
armv6 = [ ];
armv7-a = [ ];
armv8-a = [ ];
+ "armv8.1-a" = [ "armv8-a" ] ++ inferiors.armv8-a;
+ "armv8.2-a" = [ "armv8.1-a" ] ++ inferiors."armv8.1-a";
+ "armv8.3-a" = [ "armv8.2-a" ] ++ inferiors."armv8.2-a";
+ "armv8.4-a" = [ "armv8.3-a" ] ++ inferiors."armv8.3-a";
+ "armv8.5-a" = [ "armv8.4-a" ] ++ inferiors."armv8.4-a";
+ "armv8.6-a" = [ "armv8.5-a" ] ++ inferiors."armv8.5-a";
+ "armv8.7-a" = [ "armv8.6-a" ] ++ inferiors."armv8.6-a";
+ "armv8.8-a" = [ "armv8.7-a" ] ++ inferiors."armv8.7-a";
+ "armv9-a" = [ "armv8.5-a" ] ++ inferiors."armv8.5-a";
+ "armv9.1-a" = [ "armv9-a" "armv8.6-a" ] ++ inferiors."armv9-a" ++ inferiors."armv8.6-a";
+ "armv9.2-a" = [ "armv9.1-a" "armv8.7-a" ] ++ inferiors."armv9.1-a" ++ inferiors."armv8.7-a";
+ "armv9.3-a" = [ "armv9.2-a" "armv8.8-a" ] ++ inferiors."armv9.2-a" ++ inferiors."armv8.8-a";
mips32 = [ ];
loongson2f = [ ];
+ riscv64-g = [ ];
+ riscv64-gc = [ "riscv64-g" ] ++ inferiors.riscv64-g;
+ riscv64-gcv = [ "riscv64-gc" ] ++ inferiors.riscv64-gc;
};
predicates = let
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index e0ee3dae41f..49dbbe56594 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -122,6 +122,10 @@ let
znver1 = versionAtLeast ccVersion "6.0";
znver2 = versionAtLeast ccVersion "9.0";
znver3 = versionAtLeast ccVersion "11.0";
+ # ARM
+ # TODO: Fill in as needed
+ # RISCV
+ # TODO: Fill in as needed
}.${arch} or true
else if isClang then
{ # Intel
@@ -132,6 +136,10 @@ let
# AMD
znver1 = versionAtLeast ccVersion "4.0";
znver2 = versionAtLeast ccVersion "9.0";
+ # AMD
+ # TODO: Fill in as needed
+ # RISCV
+ # TODO: Fill in as needed
}.${arch} or true
else
false;
diff --git a/pkgs/top-level/impure.nix b/pkgs/top-level/impure.nix
index 4d847e280f4..874b776c1e1 100644
--- a/pkgs/top-level/impure.nix
+++ b/pkgs/top-level/impure.nix
@@ -9,12 +9,15 @@ let
# Return x if it evaluates, or def if it throws an exception.
try = x: def: let res = builtins.tryEval x; in if res.success then res.value else def;
+ configuredLocalSystem = if builtins.pathExists "/etc/nix/local-system.json" then builtins.fromJSON (builtins.readFile "/etc/nix/local-system.json") else { system = builtins.currentSystem; };
+ localSystemOverriden = args: args ? system && (args.system != configuredLocalSystem);
+ defaultLocalSystem = args: if localSystemOverriden args then { system = args.system; } else configuredLocalSystem;
in
{ # We put legacy `system` into `localSystem`, if `localSystem` was not passed.
# If neither is passed, assume we are building packages on the current
# (build, in GNU Autotools parlance) platform.
- localSystem ? { system = args.system or builtins.currentSystem; }
+ localSystem ? null
# These are needed only because nix's `--arg` command-line logic doesn't work
# with unnamed parameters allowed by ...
@@ -78,6 +81,9 @@ in
, ...
} @ args:
+let
+ localSystem' = if localSystem == null then defaultLocalSystem args else localSystem;
+in
# If `localSystem` was explicitly passed, legacy `system` should
# not be passed, and vice-versa.
@@ -85,5 +91,6 @@ assert args ? localSystem -> !(args ? system);
assert args ? system -> !(args ? localSystem);
import ./. (builtins.removeAttrs args [ "system" ] // {
- inherit config overlays localSystem;
+ inherit config overlays;
+ localSystem = localSystem';
})