2023-06-02 06:29:02 +00:00
|
|
|
|
diff --git a/lib/systems/architectures.nix b/lib/systems/architectures.nix
|
2023-07-06 15:26:09 +00:00
|
|
|
|
index 9be8c80e3f11..0d1e4c6dfb05 100644
|
2023-06-02 06:29:02 +00:00
|
|
|
|
--- a/lib/systems/architectures.nix
|
|
|
|
|
+++ b/lib/systems/architectures.nix
|
2023-07-06 15:26:09 +00:00
|
|
|
|
@@ -41,9 +41,25 @@ rec {
|
2023-06-02 06:29:02 +00:00
|
|
|
|
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 = [ ];
|
2023-06-18 15:25:18 +00:00
|
|
|
|
+ rv64gc = [];
|
|
|
|
|
+ rv64gc_zba = [];
|
|
|
|
|
+ rv64gc_zbb = [];
|
|
|
|
|
+ rv64gc_zba_zbb = [];
|
2023-06-02 06:29:02 +00:00
|
|
|
|
};
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
# a superior CPU has all the features of an inferior and is able to build and test code for it
|
2023-07-06 15:26:09 +00:00
|
|
|
|
@@ -114,8 +130,24 @@ rec {
|
2023-06-02 06:29:02 +00:00
|
|
|
|
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 = [ ];
|
2023-06-18 15:25:18 +00:00
|
|
|
|
+ rv64gc = [ ];
|
|
|
|
|
+ rv64gc_zba = [ "rv64gc" ] ++ inferiors.rv64gc;
|
|
|
|
|
+ rv64gc_zbb = [ "rv64gc" ] ++ inferiors.rv64gc;
|
|
|
|
|
+ rv64gc_zba_zbb = [ "rv64gc" "rv64gc_zba" "rv64gc_zbb" ];
|
2023-06-02 06:29:02 +00:00
|
|
|
|
};
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
predicates = let
|
2023-07-06 15:26:09 +00:00
|
|
|
|
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
|
|
|
|
|
index db3efa068c0f..2e75895496a1 100644
|
|
|
|
|
--- a/pkgs/build-support/cc-wrapper/default.nix
|
|
|
|
|
+++ b/pkgs/build-support/cc-wrapper/default.nix
|
|
|
|
|
@@ -128,6 +128,9 @@ let
|
|
|
|
|
znver2 = versionAtLeast ccVersion "9.0";
|
|
|
|
|
znver3 = versionAtLeast ccVersion "11.0";
|
|
|
|
|
znver4 = versionAtLeast ccVersion "13.0";
|
|
|
|
|
+
|
|
|
|
|
+ # Risc-V
|
|
|
|
|
+ rv64gc_zba_zbb = versionAtLeast ccVersion "11.0";
|
|
|
|
|
}.${arch} or true
|
|
|
|
|
else if isClang then
|
|
|
|
|
{ #Generic
|
|
|
|
|
@@ -147,6 +150,9 @@ let
|
|
|
|
|
znver2 = versionAtLeast ccVersion "9.0";
|
|
|
|
|
znver3 = versionAtLeast ccVersion "12.0";
|
|
|
|
|
znver4 = versionAtLeast ccVersion "16.0";
|
|
|
|
|
+
|
|
|
|
|
+ # Risc-V
|
|
|
|
|
+ rv64gc_zba_zbb = versionAtLeast ccVersion "14.0";
|
|
|
|
|
}.${arch} or true
|
|
|
|
|
else
|
|
|
|
|
false;
|
|
|
|
|
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix
|
|
|
|
|
index 745426915987..cf731b618f0c 100644
|
|
|
|
|
--- a/pkgs/stdenv/generic/make-derivation.nix
|
|
|
|
|
+++ b/pkgs/stdenv/generic/make-derivation.nix
|
|
|
|
|
@@ -166,10 +166,8 @@ let
|
|
|
|
|
, ... } @ attrs:
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
|
- # TODO(@oxij, @Ericson2314): This is here to keep the old semantics, remove when
|
|
|
|
|
- # no package has `doCheck = true`.
|
|
|
|
|
- doCheck' = doCheck && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
|
|
|
- doInstallCheck' = doInstallCheck && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
|
|
|
+ doCheck' = config.doCheckByDefault && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
|
|
|
+ doInstallCheck' = config.doCheckByDefault && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
|
|
|
|
|
|
|
|
separateDebugInfo' = separateDebugInfo && stdenv.hostPlatform.isLinux;
|
|
|
|
|
outputs' = outputs ++ lib.optional separateDebugInfo' "debug";
|
2023-06-02 06:29:02 +00:00
|
|
|
|
diff --git a/pkgs/top-level/impure.nix b/pkgs/top-level/impure.nix
|
2023-07-06 15:26:09 +00:00
|
|
|
|
index 4d847e280f4b..874b776c1e16 100644
|
2023-06-02 06:29:02 +00:00
|
|
|
|
--- 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;
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
+ 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
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
{ # 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
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
# These are needed only because nix's `--arg` command-line logic doesn't work
|
|
|
|
|
# with unnamed parameters allowed by ...
|
|
|
|
|
@@ -78,6 +81,9 @@ in
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
, ...
|
|
|
|
|
} @ args:
|
|
|
|
|
+let
|
|
|
|
|
+ localSystem' = if localSystem == null then defaultLocalSystem args else localSystem;
|
|
|
|
|
+in
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
# 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);
|
2023-07-06 15:26:09 +00:00
|
|
|
|
|
2023-06-02 06:29:02 +00:00
|
|
|
|
import ./. (builtins.removeAttrs args [ "system" ] // {
|
|
|
|
|
- inherit config overlays localSystem;
|
|
|
|
|
+ inherit config overlays;
|
|
|
|
|
+ localSystem = localSystem';
|
|
|
|
|
})
|