From e51f736076548459f36a1250de4bf6867f880b66 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 27 Aug 2018 14:39:58 -0400 Subject: [PATCH] top-level: Deprecate top-level `{build,host,target}Platform` I don't know when we can/should remove them, but this at least gets people to stop using them. The preferred alternatives also date back to 17.09 so writing forward-compatable code without extra conditions is easy. Beginning with these as they are the least controversial. --- doc/cross-compilation.xml | 10 +++------- pkgs/top-level/stage.nix | 16 +++++++++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/doc/cross-compilation.xml b/doc/cross-compilation.xml index 3b90596bcc2c..c7187d86d1b3 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 06978d1067bf..5ca8b72b8b8e 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);