top-level, stdenv: Make system and stdenv.system describe the hostPlatform.

Intuitively, one cares mainly about the host platform: Platforms differ
in meaningful ways but compilation is morally a pure process and
probably doesn't care, or those difference are already abstracted away.
@Dezgeg also empirically confirmed that > 95% of checks are indeed of
the host platform.

Yet these attributes in the old cross infrastructure were defined to be
the build platform, for expediency. And this was never before changed.
(For native builds build and host coincide, so it isn't clear what the
intention was.)

Fixing this doesn't affect native builds, since again they coincide. It
also doesn't affect cross builds of anything in Nixpkgs, as these are no
longer used. It could affect external cross builds, but I deem that
unlikely as anyone thinking about cross would use more explicit
attributes for clarity, all the more so because the rarity of inspecting
the build platform.
This commit is contained in:
John Ericson 2018-08-27 14:39:58 -04:00
parent e51f736076
commit 773233ca77
2 changed files with 4 additions and 1 deletions

View file

@ -127,6 +127,9 @@ let
"`stdenv.isArm` is deprecated after 18.03. Please use `stdenv.isAarch32` instead"
hostPlatform.isAarch32;
# The derivation's `system` is `buildPlatform.system`.
inherit (buildPlatform) system;
# Whether we should run paxctl to pax-mark binaries.
needsPax = isLinux;

View file

@ -89,7 +89,7 @@ let
targetPlatform = lib.warn
"top-level `targetPlatform` is deprecated since 18.09. Please use `stdenv.targetPlatform`."
super.stdenv.targetPlatform;
inherit (super.stdenv.buildPlatform) system;
inherit (super.stdenv.hostPlatform) system;
};
splice = self: super: import ./splice.nix lib self (buildPackages != null);