diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2017-12-19 10:27:13 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2017-12-19 10:27:13 +0100 |
commit | 4a2340ff6bd0474d9a3e933f28b8568c59019b82 (patch) | |
tree | 235f2b7adf6b6f25c416c0d3223ce4f3bfed2319 /pkgs/top-level | |
parent | b4551924b183f0f0a34868f76f52ae0bff5d041c (diff) | |
parent | 69345ec37b8da3de94d4262b81bfa08000d35427 (diff) | |
download | nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.tar nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.tar.gz nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.tar.bz2 nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.tar.lz nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.tar.xz nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.tar.zst nixlib-4a2340ff6bd0474d9a3e933f28b8568c59019b82.zip |
Merge branch 'staging'
Diffstat (limited to 'pkgs/top-level')
-rw-r--r-- | pkgs/top-level/all-packages.nix | 76 | ||||
-rw-r--r-- | pkgs/top-level/darwin-packages.nix | 10 | ||||
-rw-r--r-- | pkgs/top-level/perl-packages.nix | 3 | ||||
-rw-r--r-- | pkgs/top-level/python-packages.nix | 17 | ||||
-rw-r--r-- | pkgs/top-level/release.nix | 2 |
5 files changed, 87 insertions, 21 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1a8e2d38822c..cea7a7478add 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -287,6 +287,9 @@ with pkgs; inherit url; }; + ld-is-cc-hook = makeSetupHook { name = "ld-is-cc-hook"; } + ../build-support/setup-hooks/ld-is-cc-hook.sh; + libredirect = callPackage ../build-support/libredirect { }; madonctl = callPackage ../applications/misc/madonctl { }; @@ -5505,7 +5508,9 @@ with pkgs; clang-sierraHack = clang.override { name = "clang-wrapper-with-reexport-hack"; - useMacosReexportHack = true; + bintools = clang.bintools.override { + useMacosReexportHack = true; + }; }; clang_5 = llvmPackages_5.clang; @@ -5534,7 +5539,7 @@ with pkgs; cc = build; isClang = true; inherit stdenvNoCC; - libc = glibc; + inherit (targetPackages.stdenv.cc) bintools libc; extraPackages = [ libcxx libcxxabi ]; nativeTools = false; nativeLibc = false; @@ -5606,24 +5611,42 @@ with pkgs; }; wrapCCMulti = cc: - if system == "x86_64-linux" then lowPrio (wrapCCWith { + if system == "x86_64-linux" then let + # Binutils with glibc multi + bintools = cc.bintools.override { + libc = glibc_multi; + }; + in lowPrio (wrapCCWith { cc = cc.cc.override { stdenv = overrideCC stdenv (wrapCCWith { cc = cc.cc; + inherit bintools; libc = glibc_multi; }); profiledCompiler = false; enableMultilib = true; }; - libc = glibc_multi; - + inherit bintools; extraBuildCommands = '' echo "dontMoveLib64=1" >> $out/nix-support/setup-hook ''; }) else throw "Multilib ${cc.name} not supported on ‘${system}’"; + wrapClangMulti = clang: + if system == "x86_64-linux" then + callPackage ../development/compilers/llvm/multi.nix { + inherit clang; + gcc32 = pkgsi686Linux.gcc; + gcc64 = pkgs.gcc; + } + else throw "Multilib ${clang.cc.name} not supported on '${system}'"; + gcc_multi = wrapCCMulti gcc; + clang_multi = wrapClangMulti clang; + + gccMultiStdenv = overrideCC stdenv gcc_multi; + clangMultiStdenv = overrideCC stdenv clang_multi; gcc_debug = lowPrio (wrapCC (gcc.cc.override { stripped = false; @@ -5650,6 +5673,10 @@ with pkgs; if targetPlatform.libc == "msvcrt" then targetPackages.windows.mingw_w64_headers else if targetPlatform.libc == "libSystem" then darwin.xcode else null; + binutils1 = wrapBintoolsWith { + bintools = binutils-unwrapped; + libc = libcCross1; + }; in wrapCCWith { name = "gcc-cross-wrapper"; cc = gccFun { @@ -5663,8 +5690,10 @@ with pkgs; crossStageStatic = true; langCC = false; libcCross = libcCross1; + targetPackages.stdenv.cc.bintools = binutils1; enableShared = false; }; + bintools = binutils1; libc = libcCross1; }; @@ -5673,6 +5702,7 @@ with pkgs; name = "gcc-cross-wrapper"; cc = gccCrossStageStatic.gcc; libc = windows.mingw_headers2; + inherit binutils; }; gcc45 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.5 { @@ -6435,7 +6465,8 @@ with pkgs; wla-dx = callPackage ../development/compilers/wla-dx { }; - wrapCCWith = { name ? "", cc, libc, extraBuildCommands ? "" }: ccWrapperFun rec { + wrapCCWith = { name ? "", cc, bintools, libc, extraBuildCommands ? "" }: + ccWrapperFun rec { nativeTools = targetPlatform == hostPlatform && stdenv.cc.nativeTools or false; nativeLibc = targetPlatform == hostPlatform && stdenv.cc.nativeLibc or false; nativePrefix = stdenv.cc.nativePrefix or ""; @@ -6444,14 +6475,20 @@ with pkgs; isGNU = cc.isGNU or false; isClang = cc.isClang or false; - inherit name cc libc extraBuildCommands; + inherit name cc bintools libc extraBuildCommands; }; ccWrapperFun = callPackage ../build-support/cc-wrapper; + bintoolsWrapperFun = callPackage ../build-support/bintools-wrapper; wrapCC = cc: wrapCCWith { name = lib.optionalString (targetPlatform != hostPlatform) "gcc-cross-wrapper"; inherit cc; + # This should be the only bintools runtime dep with this sort of logic. The + # Others should instead delegate to the next stage's choice with + # `targetPackages.stdenv.cc.bintools`. This one is different just to + # provide the default choice, avoiding infinite recursion. + bintools = if targetPlatform.isDarwin then darwin.binutils else binutils; libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc; }; # legacy version, used for gnat bootstrapping @@ -6463,6 +6500,17 @@ with pkgs; libc = glibc; }; + wrapBintoolsWith = { bintools, libc }: bintoolsWrapperFun { + nativeTools = targetPlatform == hostPlatform && stdenv.cc.nativeTools or false; + nativeLibc = targetPlatform == hostPlatform && stdenv.cc.nativeLibc or false; + nativePrefix = stdenv.cc.nativePrefix or ""; + + noLibc = (libc == null); + + inherit bintools libc; + extraBuildCommands = ""; + }; + # prolog yap = callPackage ../development/compilers/yap { }; @@ -7044,13 +7092,19 @@ with pkgs; then darwin.binutils else binutils-raw; - binutils-raw = callPackage ../development/tools/misc/binutils { + binutils-unwrapped = callPackage ../development/tools/misc/binutils { # FHS sys dirs presumably only have stuff for the build platform noSysDirs = (targetPlatform != buildPlatform) || noSysDirs; }; + binutils-raw = wrapBintoolsWith { + libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc; + bintools = binutils-unwrapped; + }; binutils_nogold = lowPrio (binutils-raw.override { - gold = false; + bintools = binutils-raw.bintools.override { + gold = false; + }; }); bison2 = callPackage ../development/tools/parsing/bison/2.x.nix { }; @@ -9787,6 +9841,7 @@ with pkgs; libva = callPackage ../development/libraries/libva { }; libva-full = libva.override { minimal = false; }; + libva-utils = callPackage ../development/libraries/libva-utils { }; libvdpau = callPackage ../development/libraries/libvdpau { }; @@ -20034,6 +20089,9 @@ with pkgs; cc-wrapper-libcxx-5 = callPackage ../test/cc-wrapper { stdenv = llvmPackages_5.libcxxStdenv; }; stdenv-inputs = callPackage ../test/stdenv-inputs { }; + cc-multilib-gcc = callPackage ../test/cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; }; + cc-multilib-clang = callPackage ../test/cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; }; + macOSSierraShared = callPackage ../test/macos-sierra-shared {}; }; diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 30f50c56db74..7540a47ef6d5 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -10,8 +10,14 @@ in apple_sdk = callPackage ../os-specific/darwin/apple-sdk { }; - binutils = callPackage ../os-specific/darwin/binutils { - inherit (darwin) cctools; + binutils = pkgs.wrapBintoolsWith { + libc = + if pkgs.targetPlatform != pkgs.hostPlatform + then pkgs.libcCross + else pkgs.stdenv.cc.libc; + bintools = callPackage ../os-specific/darwin/binutils { + inherit (darwin) cctools; + }; }; cctools = callPackage ../os-specific/darwin/cctools/port.nix { diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 7b5f3519f2b6..d56b4a289a7c 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -4849,6 +4849,7 @@ let self = _self // overrides; _self = with self; { url = "mirror://cpan/authors/id/J/JG/JGMYERS/${name}.tar.gz"; sha256 = "834d893aa7db6ce3f158afbd0e432d6ed15a276e0940db0a74be13fd9c4bbbf1"; }; + nativeBuildInputs = [ pkgs.ld-is-cc-hook ]; propagatedBuildInputs = [ ModuleBuild ]; meta = { description = "An Encode::Encoding subclass that detects the encoding of data"; @@ -5162,6 +5163,7 @@ let self = _self // overrides; _self = with self; { url = "mirror://cpan/modules/by-module/ExtUtils/${name}.tar.gz"; sha256 = "1a77hxf2pa8ia9na72rijv1yhpn2bjrdsybwk2dj2l938pl3xn0w"; }; + nativeBuildInputs = [ pkgs.ld-is-cc-hook ]; propagatedBuildInputs = [ CaptureTiny ]; }; @@ -8488,6 +8490,7 @@ let self = _self // overrides; _self = with self; { url = "mirror://cpan/modules/by-module/Math/${name}.tar.gz"; sha256 = "0i9wzvig7ayijc9nvh5x5rryk1jrcj1hcvfmlcj449rnnxx24dav"; }; + nativeBuildInputs = [ pkgs.ld-is-cc-hook ]; propagatedBuildInputs = [ ModuleBuildWithXSpp ExtUtilsXSpp ExtUtilsTypemapsDefault TestDeep ]; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 316e5c7f293c..b1a8fca5c439 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -56,14 +56,14 @@ let flit = self.flit; # We want Python libraries to be named like e.g. "python3.6-${name}" inherit namePrefix; - pythonModule = python; + inherit toPythonModule; })); buildPythonApplication = makeOverridablePythonPackage ( makeOverridable (callPackage ../development/interpreters/python/build-python-package.nix { inherit bootstrapped-pip; flit = self.flit; namePrefix = ""; - pythonModule = false; + toPythonModule = x: x; # Application does not provide modules. })); graphiteVersion = "1.0.2"; @@ -87,15 +87,12 @@ let in fetcher (builtins.removeAttrs attrs ["format"]) ); # Check whether a derivation provides a Python module. - hasPythonModule = drv: (hasAttr "pythonModule" drv) && ( (getAttr "pythonModule" drv) == python); + hasPythonModule = drv: drv?pythonModule && drv.pythonModule == python; # Get list of required Python modules given a list of derivations. requiredPythonModules = drvs: let - filterNull = list: filter (x: !isNull x) list; - conditionalGetRecurse = attr: condition: drv: let f = conditionalGetRecurse attr condition; in - (if (condition drv) then unique [drv]++(concatMap f (filterNull(getAttr attr drv))) else []); - _required = drv: conditionalGetRecurse "propagatedBuildInputs" hasPythonModule drv; - in [python] ++ (unique (concatMap _required (filterNull drvs))); + modules = filter hasPythonModule drvs; + in unique ([python] ++ modules ++ concatLists (catAttrs "requiredPythonModules" modules)); # Create a PYTHONPATH from a list of derivations. This function recurses into the items to find derivations # providing Python modules. @@ -106,9 +103,9 @@ let drv.overrideAttrs( oldAttrs: { # Use passthru in order to prevent rebuilds when possible. passthru = (oldAttrs.passthru or {})// { - name = namePrefix + oldAttrs.name; pythonModule = python; pythonPath = [ ]; # Deprecated, for compatibility. + requiredPythonModules = requiredPythonModules drv.propagatedBuildInputs; }; }); @@ -129,7 +126,7 @@ in { recursivePthLoader = callPackage ../development/python-modules/recursive-pth-loader { }; - setuptools = callPackage ../development/python-modules/setuptools { }; + setuptools = toPythonModule (callPackage ../development/python-modules/setuptools { }); vowpalwabbit = callPackage ../development/python-modules/vowpalwabbit { pythonPackages = self; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 8cbb7063b4eb..201c3a38cf8b 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -112,6 +112,8 @@ let jobs.tests.cc-wrapper-clang-39.x86_64-darwin jobs.tests.cc-wrapper-libcxx-39.x86_64-linux jobs.tests.cc-wrapper-libcxx-39.x86_64-darwin + jobs.tests.cc-multilib-gcc.x86_64-linux + jobs.tests.cc-multilib-clang.x86_64-linux jobs.tests.stdenv-inputs.x86_64-linux jobs.tests.stdenv-inputs.x86_64-darwin jobs.tests.macOSSierraShared.x86_64-darwin |