Commit 7320fa9d authored by Tuomas Tynkkynen's avatar Tuomas Tynkkynen
Browse files

Revert "stdenvs: Distinguish between `extraBuildInputs` and `extraNativeBuildInputs`"

This reverts commit eeabf857.

This change suddenly makes tons of stdenv internals visible in
nativeBuildInputs of every derivation, which doesn't seem desirable.
E.g:

````
nix-repl> hello.nativeBuildInputs
[ «derivation /nix/store/bcfkyf6bhssxd2vzwgzmsbn7b5b9rpxc-patchelf-0.9.drv»
  «derivation /nix/store/4wnshnz9wwanpfzcrdd76rri7pyqn9sk-paxctl-0.9.drv»
  << snip 10+ lines >>
  «derivation /nix/store/d35pgh1lcg5nm0x28d899pxj30b8c9b2-gcc-wrapper-6.4.0.drv»
]
````
parent 6a60cca7
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -59,12 +59,11 @@ in rec {
  stageFun = step: last: {shell             ? "${bootstrapTools}/bin/bash",
                          overrides         ? (self: super: {}),
                          extraPreHook      ? "",
                          extraNativeBuildInputs,
                          extraBuildInputs,
                          allowedRequisites ? null}:
    let
      thisStdenv = import ../generic {
        inherit config shell extraNativeBuildInputs extraBuildInputs;
        inherit config shell extraBuildInputs;
        allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [
          thisStdenv.cc.expand-response-params
        ];
@@ -163,7 +162,6 @@ in rec {

    };

    extraNativeBuildInputs = [];
    extraBuildInputs = [];
  };

@@ -171,7 +169,6 @@ in rec {

  stage1 = prevStage: with prevStage; stageFun 1 prevStage {
    extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\"";
    extraNativeBuildInputs = [];
    extraBuildInputs = [ pkgs.libcxx ];

    allowedRequisites =
@@ -198,8 +195,7 @@ in rec {
      export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
    '';

    extraNativeBuildInputs = [ pkgs.xz ];
    extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
    extraBuildInputs = with pkgs; [ xz darwin.CF libcxx ];

    allowedRequisites =
      [ bootstrapTools ] ++
@@ -230,8 +226,7 @@ in rec {
    # enables patchShebangs above. Unfortunately, patchShebangs ignores our $SHELL setting
    # and instead goes by $PATH, which happens to contain bootstrapTools. So it goes and
    # patches our shebangs back to point at bootstrapTools. This makes sure bash comes first.
    extraNativeBuildInputs = with pkgs; [ xz pkgs.bash ];
    extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
    extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ];

    extraPreHook = ''
      export PATH=${pkgs.bash}/bin:$PATH
@@ -265,8 +260,7 @@ in rec {

  stage4 = prevStage: with prevStage; stageFun 4 prevStage {
    shell = "${pkgs.bash}/bin/bash";
    extraNativeBuildInputs = with pkgs; [ xz pkgs.bash ];
    extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
    extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ];
    extraPreHook = ''
      export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
    '';
@@ -327,7 +321,6 @@ in rec {
      libc = pkgs.darwin.Libsystem;
    };

    extraNativeBuildInputs = [];
    extraBuildInputs = with pkgs; [ darwin.CF libcxx ];

    extraAttrs = {
+3 −8
Original line number Diff line number Diff line
@@ -6,20 +6,15 @@ done

mkdir $out

# Buid the setup script
echo "export SHELL=$shell" > $out/setup
echo "initialPath=\"$initialPath\"" >> $out/setup
echo "defaultNativeBuildInputs=\"$defaultNativeBuildInputs\"" >> $out/setup
echo "$preHook" >> $out/setup
cat "$setup" >> $out/setup

# Allow the user to install stdenv using nix-env and get the packages
# in stdenv.
mkdir -p "$out/nix-support"
echo '# Hack to induce runtime dependencies on the default inputs' \
    > "$out/nix-support/default-inputs.txt"
printf '%s\n' $defaultNativeBuildInputs $defaultBuildInputs \
    >> "$out/nix-support/default-inputs.txt"
mkdir $out/nix-support
if [ "$propagatedUserEnvPkgs" ]; then
    printf '%s ' $propagatedUserEnvPkgs \
        > "$out/nix-support/propagated-user-env-packages"
    printf '%s ' $propagatedUserEnvPkgs > $out/nix-support/propagated-user-env-packages
fi
+5 −13
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ let lib = import ../../../lib; in lib.makeOverridable (

, setupScript ? ./setup.sh

, extraNativeBuildInputs ? []
, extraBuildInputs ? []
, __stdenvImpureHostDeps ? []
, __extraImpureHostDeps ? []
@@ -42,7 +41,7 @@ let lib = import ../../../lib; in lib.makeOverridable (
}:

let
  defaultNativeBuildInputs = extraNativeBuildInputs ++
  defaultNativeBuildInputs = extraBuildInputs ++
    [ ../../build-support/setup-hooks/move-docs.sh
      ../../build-support/setup-hooks/compress-man-pages.sh
      ../../build-support/setup-hooks/strip.sh
@@ -59,16 +58,11 @@ let
      cc
    ];

  defaultBuildInputs = extraBuildInputs;

  # The stdenv that we are producing.
  stdenv =
    derivation (
    lib.optionalAttrs (allowedRequisites != null) {
      allowedRequisites = allowedRequisites
        ++ defaultNativeBuildInputs ++ defaultBuildInputs;
    }
    // {
    (if isNull allowedRequisites then {} else { allowedRequisites = allowedRequisites ++ defaultNativeBuildInputs; }) //
    {
      inherit name;

      # Nix itself uses the `system` field of a derivation to decide where to
@@ -81,8 +75,7 @@ let

      setup = setupScript;

      inherit preHook initialPath shell
        defaultNativeBuildInputs defaultBuildInputs;
      inherit preHook initialPath shell defaultNativeBuildInputs;
    }
    // lib.optionalAttrs buildPlatform.isDarwin {
      __sandboxProfile = stdenvSandboxProfile;
@@ -98,8 +91,7 @@ let

      inherit buildPlatform hostPlatform targetPlatform;

      inherit extraNativeBuildInputs extraBuildInputs
        __extraImpureHostDeps extraSandboxProfile;
      inherit extraBuildInputs __extraImpureHostDeps extraSandboxProfile;

      # Utility flags to test the type of platform.
      inherit (hostPlatform)
+4 −4
Original line number Diff line number Diff line
@@ -44,10 +44,10 @@ rec {
    , ... } @ attrs:
    let
      dependencies = map lib.chooseDevOutputs [
        (map (drv: drv.nativeDrv or drv) (nativeBuildInputs ++ stdenv.defaultNativeBuildInputs)
        (map (drv: drv.nativeDrv or drv) nativeBuildInputs
           ++ lib.optional separateDebugInfo ../../build-support/setup-hooks/separate-debug-info.sh
           ++ lib.optional stdenv.hostPlatform.isWindows ../../build-support/setup-hooks/win-dll-link.sh)
        (map (drv: drv.crossDrv or drv) (buildInputs ++ stdenv.defaultBuildInputs))
        (map (drv: drv.crossDrv or drv) buildInputs)
      ];
      propagatedDependencies = map lib.chooseDevOutputs [
        (map (drv: drv.nativeDrv or drv) propagatedNativeBuildInputs)
@@ -65,11 +65,11 @@ rec {
           "sandboxProfile" "propagatedSandboxProfile"])
        // (let
          computedSandboxProfile =
            lib.concatMap (input: input.__propagatedSandboxProfile or []) (lib.concatLists dependencies);
            lib.concatMap (input: input.__propagatedSandboxProfile or []) (stdenv.extraBuildInputs ++ lib.concatLists dependencies);
          computedPropagatedSandboxProfile =
            lib.concatMap (input: input.__propagatedSandboxProfile or []) (lib.concatLists propagatedDependencies);
          computedImpureHostDeps =
            lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists dependencies));
            lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (stdenv.extraBuildInputs ++ lib.concatLists dependencies));
          computedPropagatedImpureHostDeps =
            lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists propagatedDependencies));
        in
+3 −2
Original line number Diff line number Diff line
@@ -317,17 +317,18 @@ if [ -z "$crossConfig" ]; then
    # are handled identically to nativeBuildInputs
    declare -a nativePkgs
    for i in $nativeBuildInputs $buildInputs \
             $defaultNativeBuildInputs $defaultBuildInputs \
             $propagatedNativeBuildInputs $propagatedBuildInputs; do
        findInputs "$i" nativePkgs propagated-native-build-inputs
    done
else
    declare -a crossPkgs
    for i in $buildInputs $propagatedBuildInputs; do
    for i in $buildInputs $defaultBuildInputs $propagatedBuildInputs; do
        findInputs "$i" crossPkgs propagated-build-inputs
    done

    declare -a nativePkgs
    for i in $nativeBuildInputs $propagatedNativeBuildInputs; do
    for i in $nativeBuildInputs $defaultNativeBuildInputs $propagatedNativeBuildInputs; do
        findInputs "$i" nativePkgs propagated-native-build-inputs
    done
fi
Loading