mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-03 20:33:21 +00:00
e0464e4788
In preparation for the deprecation of `stdenv.isX`. These shorthands are not conducive to cross-compilation because they hide the platforms. Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way One example of why this is bad and especially affects compiler packages https://www.github.com/NixOS/nixpkgs/pull/343059 There are too many files to go through manually but a treewide should get users thinking when they see a `hostPlatform.isX` in a place where it doesn't make sense. ``` fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is" fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is" fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is" ```
39 lines
1.2 KiB
Nix
39 lines
1.2 KiB
Nix
{ lib
|
|
, stdenv
|
|
, gccStdenv
|
|
, gcc9Stdenv
|
|
, callPackage
|
|
, isl_0_17, isl_0_20
|
|
, libcCross
|
|
, threadsCross
|
|
, noSysDirs
|
|
, lowPrio
|
|
, wrapCC
|
|
}@args:
|
|
|
|
let
|
|
versions = import ./versions.nix;
|
|
gccForMajorMinorVersion = majorMinorVersion:
|
|
let
|
|
atLeast = lib.versionAtLeast majorMinorVersion;
|
|
attrName = "gcc${lib.replaceStrings ["."] [""] majorMinorVersion}";
|
|
pkg = lowPrio (wrapCC (callPackage ./default.nix ({
|
|
inherit noSysDirs;
|
|
inherit majorMinorVersion;
|
|
reproducibleBuild = true;
|
|
profiledCompiler = false;
|
|
libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then args.libcCross else null;
|
|
threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else { };
|
|
isl = if stdenv.hostPlatform.isDarwin then null
|
|
else if atLeast "9" then isl_0_20
|
|
else /* atLeast "7" */ isl_0_17;
|
|
} // lib.optionalAttrs (!(atLeast "9")) {
|
|
# gcc 10 is too strict to cross compile gcc <= 8
|
|
stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc9Stdenv else stdenv;
|
|
})));
|
|
in
|
|
lib.nameValuePair attrName pkg;
|
|
in
|
|
lib.listToAttrs (map gccForMajorMinorVersion versions.allMajorVersions)
|
|
|