Skip to content

Commit

Permalink
Revert "Merge pull request #36948 from dtzWill/fix/glibc-libgcc_s"
Browse files Browse the repository at this point in the history
This reverts commit 80ff19a, reversing
changes made to 43e867a.
  • Loading branch information
matthewbauer committed Jan 27, 2019
1 parent 2b57e9f commit 319ebef
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 28 deletions.
16 changes: 16 additions & 0 deletions pkgs/development/libraries/glibc/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,22 @@ callPackage ./common.nix { inherit stdenv; } {
# limit rebuilds by only disabling pie w/musl
++ stdenv.lib.optional stdenv.hostPlatform.isMusl "pie";

# When building glibc from bootstrap-tools, we need libgcc_s at RPATH for
# any program we run, because the gcc will have been placed at a new
# store path than that determined when built (as a source for the
# bootstrap-tools tarball)
# Building from a proper gcc staying in the path where it was installed,
# libgcc_s will not be at {gcc}/lib, and gcc's libgcc will be found without
# any special hack.
preInstall = ''
if [ -f ${stdenv.cc.cc}/lib/libgcc_s.so.1 ]; then
mkdir -p $out/lib
cp ${stdenv.cc.cc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1
# the .so It used to be a symlink, but now it is a script
cp -a ${stdenv.cc.cc}/lib/libgcc_s.so $out/lib/libgcc_s.so
fi
'';

postInstall = ''
echo SUPPORTED-LOCALES=C.UTF-8/UTF-8 > ../glibc-2*/localedata/SUPPORTED
make -j''${NIX_BUILD_CORES:-1} -l''${NIX_BUILD_CORES:-1} localedata/install-locales
Expand Down
86 changes: 58 additions & 28 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7336,51 +7336,67 @@ in

llvmPackages = recurseIntoAttrs llvmPackages_5;

llvmPackages_35 = callPackage ../development/compilers/llvm/3.5 {
llvmPackages_35 = callPackage ../development/compilers/llvm/3.5 ({
isl = isl_0_14;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6;
});

llvmPackages_37 = callPackage ../development/compilers/llvm/3.7 {
llvmPackages_37 = callPackage ../development/compilers/llvm/3.7 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_37.tools;
targetLlvmLibraries = targetPackages.llvmPackages_37.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6;
});

llvmPackages_38 = callPackage ../development/compilers/llvm/3.8 {
llvmPackages_38 = callPackage ../development/compilers/llvm/3.8 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_38.tools;
targetLlvmLibraries = targetPackages.llvmPackages_38.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6;
});

llvmPackages_39 = callPackage ../development/compilers/llvm/3.9 {
llvmPackages_39 = callPackage ../development/compilers/llvm/3.9 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_39.tools;
targetLlvmLibraries = targetPackages.llvmPackages_39.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6;
});

llvmPackages_4 = callPackage ../development/compilers/llvm/4 {
llvmPackages_4 = callPackage ../development/compilers/llvm/4 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_4.tools;
targetLlvmLibraries = targetPackages.llvmPackages_4.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6;
});

llvmPackages_5 = callPackage ../development/compilers/llvm/5 {
llvmPackages_5 = callPackage ../development/compilers/llvm/5 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_5.tools;
targetLlvmLibraries = targetPackages.llvmPackages_5.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6; # with gcc-7: undefined reference to `__divmoddi4'
});

llvmPackages_6 = callPackage ../development/compilers/llvm/6 {
llvmPackages_6 = callPackage ../development/compilers/llvm/6 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_6.tools;
targetLlvmLibraries = targetPackages.llvmPackages_6.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6; # with gcc-7: undefined reference to `__divmoddi4'
});

llvmPackages_7 = callPackage ../development/compilers/llvm/7 {
llvmPackages_7 = callPackage ../development/compilers/llvm/7 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_7.tools;
targetLlvmLibraries = targetPackages.llvmPackages_7.libraries;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv buildPackages.gcc6; # with gcc-7: undefined reference to `__divmoddi4'
});

llvmPackages_latest = llvmPackages_7;

Expand Down Expand Up @@ -7499,10 +7515,12 @@ in
};

# For beta and nightly releases use the nixpkgs-mozilla overlay
rust = callPackage ../development/compilers/rust {
rust = callPackage ../development/compilers/rust ({
inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
llvm = llvm_7;
};
} // stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
});
inherit (rust) cargo rustc;

buildRustCrate = callPackage ../build-support/rust/build-rust-crate { };
Expand Down Expand Up @@ -8131,9 +8149,11 @@ in
spark_22 = callPackage ../applications/networking/cluster/spark { version = "2.2.1"; };

spidermonkey_1_8_5 = callPackage ../development/interpreters/spidermonkey/1.8.5.nix { };
spidermonkey_38 = callPackage ../development/interpreters/spidermonkey/38.nix {
spidermonkey_38 = callPackage ../development/interpreters/spidermonkey/38.nix ({
inherit (darwin) libobjc;
};
} // (stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}));
spidermonkey_52 = callPackage ../development/interpreters/spidermonkey/52.nix { };
spidermonkey_60 = callPackage ../development/interpreters/spidermonkey/60.nix { };
spidermonkey = spidermonkey_38;
Expand Down Expand Up @@ -10364,18 +10384,28 @@ in

hyperscan = callPackage ../development/libraries/hyperscan { };

icu58 = callPackage (import ../development/libraries/icu/58.nix fetchurl) {
icu58 = callPackage (import ../development/libraries/icu/58.nix fetchurl) ({
nativeBuildRoot = buildPackages.icu58.override { buildRootOnly = true; };
};
icu59 = callPackage ../development/libraries/icu/59.nix {
} //
(stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}));
icu59 = callPackage ../development/libraries/icu/59.nix ({
nativeBuildRoot = buildPackages.icu59.override { buildRootOnly = true; };
};
icu60 = callPackage ../development/libraries/icu/60.nix {
} // (stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}));
icu60 = callPackage ../development/libraries/icu/60.nix ({
nativeBuildRoot = buildPackages.icu60.override { buildRootOnly = true; };
};
icu63 = callPackage ../development/libraries/icu/63.nix {
} // (stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}));
icu63 = callPackage ../development/libraries/icu/63.nix ({
nativeBuildRoot = buildPackages.icu63.override { buildRootOnly = true; };
};
} // (stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
}));

icu = icu59;

id3lib = callPackage ../development/libraries/id3lib { };
Expand Down

4 comments on commit 319ebef

@grahamc
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vcunat
Copy link
Member

@vcunat vcunat commented on 319ebef Jan 27, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Context is on the PR: #36948

@dtzWill
Copy link
Member

@dtzWill dtzWill commented on 319ebef Jan 27, 2019 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbogdan
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just thinking out loud but how bad of an idea would it be to let just glibc use libgcc_s from bootstrap tools but "hide it" so it's not visible to things that need to link to libgcc_s directly? Would require patching glibc though...
Other idea I had was hacking up the libpthread.so linker script so that it includes libgcc_s but that has its own problems (could be fragile when it comes to bootstrapping as I think things could potentially retain a reference to bootstrap tools, and also clang + glibc stdenvs would need to be taught where to find the library).

Please sign in to comment.