From 006c38fa5353e0a157d1af59ca4b345f42a7ae16 Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Sun, 20 Feb 2022 20:14:49 -0800 Subject: [PATCH] platforms.nix: use {} on failed detection instead of silently assuming pc This patch causes the autodetection code in lib/systems/platforms.nix to return {} if it cannot detect the platform and one of the platform.nix-detection-provided attributes (linux-kernel, gcc, and rustc) are accessed, rather than silently assuming the "pc" platform as was previously done. It is definitely safe to assume that code using these attributes is prepared to deal with `gcc` and `rustc` not being defined, because many of the working entries in this file don't define it. Regarding `linux-kernel` the situation is less certain, but some code (`lib/systems/default.nix` for example) is already designed to deal with that attribute being missing. At worst it would result in an "attribute not found" error. While adding mips64el bootstrap support to nixpkgs, the silent assumption that mips64el routers are actually Intel PCs caused significant frustration. This commit removes that assumption in order to save people who port nixpkgs to new platforms in the future from this frustration. --- lib/systems/platforms.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index 04d55416242..a096fdde309 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -3,7 +3,7 @@ # targetPlatform, etc) containing at least the minimal set of attrs # required (see types.parsedPlatform in lib/systems/parse.nix). This # file takes an already-valid platform and further elaborates it with -# optional fields such as linux-kernel, gcc, etc. +# optional fields; currently these are: linux-kernel, gcc, and rustc. { lib }: rec { @@ -568,5 +568,5 @@ rec { else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv - else pc; + else { }; }