diff --git a/doc/cross-compilation.xml b/doc/cross-compilation.xml index 3b90596bcc2c6f1..c7187d86d1b3e1a 100644 --- a/doc/cross-compilation.xml +++ b/doc/cross-compilation.xml @@ -47,13 +47,9 @@ In Nixpkgs, these three platforms are defined as attribute sets under the - names buildPlatform, hostPlatform, - and targetPlatform. All three are always defined as - attributes in the standard environment, and at the top level. That means - one can get at them just like a dependency in a function that is imported - with callPackage: -{ stdenv, buildPlatform, hostPlatform, fooDep, barDep, .. }: ...buildPlatform... - , or just off stdenv: + names buildPlatform, hostPlatform, and + targetPlatform. They are always defined as attributes in + the standard environment. That means one can access them like: { stdenv, fooDep, barDep, .. }: ...stdenv.buildPlatform... . diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index 06978d1067bf966..5ca8b72b8b8e8c8 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -79,11 +79,17 @@ let # The old identifiers for cross-compiling. These should eventually be removed, # and the packages that rely on them refactored accordingly. - platformCompat = self: super: let - inherit (super.stdenv) buildPlatform hostPlatform targetPlatform; - in { - inherit buildPlatform hostPlatform targetPlatform; - inherit (buildPlatform) system; + platformCompat = self: super: { + buildPlatform = lib.warn + "top-level `buildPlatform` is deprecated since 18.09. Please use `stdenv.buildPlatform`." + super.stdenv.buildPlatform; + hostPlatform = lib.warn + "top-level `hostPlatform` is deprecated since 18.09. Please use `stdenv.hostPlatform`." + super.stdenv.hostPlatform; + targetPlatform = lib.warn + "top-level `targetPlatform` is deprecated since 18.09. Please use `stdenv.targetPlatform`." + super.stdenv.targetPlatform; + inherit (super.stdenv.buildPlatform) system; }; splice = self: super: import ./splice.nix lib self (buildPackages != null);