diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-09-27 16:00:58 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-09-27 16:00:58 +0000 |
commit | c504e5d19d940926b3ddcf62c983d66f49f3cbb2 (patch) | |
tree | ec955e58bcac2cb93b9f8c10786b23f61d40cd7e /nixpkgs/pkgs/development/libraries/boost | |
parent | 72789cefce7b17419815f600fbd18238d89afcc9 (diff) | |
parent | 1737f98af6667560e3e4f930312f9b5002649d04 (diff) | |
download | nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.gz nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.bz2 nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.lz nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.xz nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.zst nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.zip |
Merge commit '1737f98af6667560e3e4f930312f9b5002649d04'
Conflicts: nixpkgs/nixos/modules/services/networking/ssh/sshd.nix nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix nixpkgs/pkgs/development/node-packages/default.nix nixpkgs/pkgs/development/python-modules/priority/deadline.patch
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/boost')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/boost/default.nix | 47 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/boost/generic.nix | 60 |
2 files changed, 88 insertions, 19 deletions
diff --git a/nixpkgs/pkgs/development/libraries/boost/default.nix b/nixpkgs/pkgs/development/libraries/boost/default.nix new file mode 100644 index 000000000000..3b79378605f2 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/boost/default.nix @@ -0,0 +1,47 @@ +{ lib +, callPackage +, boost-build +, fetchurl +}: + +let + # for boost 1.55 we need to use 1.56's b2 + # since 1.55's build system is not working + # with our derivation + useBoost156 = rec { + version = "1.56.0"; + src = fetchurl { + url = "mirror://sourceforge/boost/boost_${lib.replaceStrings ["."] ["_"] version}.tar.bz2"; + sha256 = "07gz62nj767qzwqm3xjh11znpyph8gcii0cqhnx7wvismyn34iqk"; + }; + }; + + makeBoost = file: + lib.fix (self: + callPackage file { + boost-build = boost-build.override { + # useBoost allows us passing in src and version from + # the derivation we are building to get a matching b2 version. + useBoost = + if lib.versionAtLeast self.version "1.56" + then self + else useBoost156; # see above + }; + } + ); +in { + boost155 = makeBoost ./1.55.nix; + boost159 = makeBoost ./1.59.nix; + boost160 = makeBoost ./1.60.nix; + boost165 = makeBoost ./1.65.nix; + boost166 = makeBoost ./1.66.nix; + boost167 = makeBoost ./1.67.nix; + boost168 = makeBoost ./1.68.nix; + boost169 = makeBoost ./1.69.nix; + boost170 = makeBoost ./1.70.nix; + boost171 = makeBoost ./1.71.nix; + boost172 = makeBoost ./1.72.nix; + boost173 = makeBoost ./1.73.nix; + boost174 = makeBoost ./1.74.nix; + boost175 = makeBoost ./1.75.nix; +} diff --git a/nixpkgs/pkgs/development/libraries/boost/generic.nix b/nixpkgs/pkgs/development/libraries/boost/generic.nix index 1f9bbe5ffcad..2d8d13482eac 100644 --- a/nixpkgs/pkgs/development/libraries/boost/generic.nix +++ b/nixpkgs/pkgs/development/libraries/boost/generic.nix @@ -1,8 +1,9 @@ { lib, stdenv, icu, expat, zlib, bzip2, python ? null, fixDarwinDylibNames, libiconv +, boost-build , fetchpatch , which -, buildPackages , toolset ? /**/ if stdenv.cc.isClang then "clang" + else if stdenv.cc.isGNU then "gcc" else null , enableRelease ? true , enableDebug ? false @@ -67,6 +68,8 @@ let else "$NIX_BUILD_CORES"; + needUserConfig = stdenv.hostPlatform != stdenv.buildPlatform || useMpi || stdenv.isDarwin; + b2Args = concatStringsSep " " ([ "--includedir=$dev/include" "--libdir=$out/lib" @@ -95,7 +98,7 @@ let ++ optional (variant == "release") "debug-symbols=off" ++ optional (toolset != null) "toolset=${toolset}" ++ optional (!enablePython) "--without-python" - ++ optional (useMpi || stdenv.hostPlatform != stdenv.buildPlatform) "--user-config=user-config.jam" + ++ optional needUserConfig "--user-config=user-config.jam" ++ optionals (stdenv.hostPlatform.libc == "msvcrt") [ "threadapi=win32" ] ++ extraB2Args @@ -137,22 +140,39 @@ stdenv.mkDerivation { maintainers = with maintainers; [ peti ]; }; - preConfigure = '' - if test -f tools/build/src/tools/clang-darwin.jam ; then - substituteInPlace tools/build/src/tools/clang-darwin.jam \ - --replace '@rpath/$(<[1]:D=)' "$out/lib/\$(<[1]:D=)"; - fi; - '' + optionalString useMpi '' + preConfigure = optionalString useMpi '' cat << EOF >> user-config.jam using mpi : ${mpi}/bin/mpiCC ; EOF - '' + optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + '' + # On darwin we need to add the `$out/lib` to the libraries' rpath explicitly, + # otherwise the dynamic linker is unable to resolve the reference to @rpath + # when the boost libraries want to load each other at runtime. + + optionalString (stdenv.isDarwin && enableShared) '' + cat << EOF >> user-config.jam + using clang-darwin : : ${stdenv.cc.targetPrefix}c++ + : <linkflags>"-rpath $out/lib/" + ; + EOF + '' + # b2 has trouble finding the correct compiler and tools for cross compilation + # since it apparently ignores $CC, $AR etc. Thus we need to set everything + # in user-config.jam. To keep things simple we just set everything in an + # uniform way for clang and gcc (which works thanks to our cc-wrapper). + # We pass toolset later which will make b2 invoke everything in the right + # way -- the other toolset in user-config.jam will be ignored. + + optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' cat << EOF >> user-config.jam - using gcc : cross : ${stdenv.cc.targetPrefix}c++ ; + using gcc : cross : ${stdenv.cc.targetPrefix}c++ + : <archiver>$AR + <ranlib>$RANLIB + ; + + using clang : cross : ${stdenv.cc.targetPrefix}c++ + : <archiver>$AR + <ranlib>$RANLIB + ; EOF - # Build b2 with buildPlatform CC/CXX. - sed '2i export CC=$CC_FOR_BUILD; export CXX=$CXX_FOR_BUILD' \ - -i ./tools/build/src/engine/build.sh ''; NIX_CFLAGS_LINK = lib.optionalString stdenv.isDarwin @@ -160,9 +180,8 @@ stdenv.mkDerivation { enableParallelBuilding = true; - nativeBuildInputs = [ which ] + nativeBuildInputs = [ which boost-build ] ++ optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - depsBuildBuild = [ buildPackages.stdenv.cc ]; buildInputs = [ expat zlib bzip2 libiconv ] ++ optional (stdenv.hostPlatform == stdenv.buildPlatform) icu ++ optional enablePython python @@ -170,16 +189,19 @@ stdenv.mkDerivation { configureScript = "./bootstrap.sh"; configurePlatforms = []; + dontDisableStatic = true; + dontAddStaticConfigureFlags = true; configureFlags = [ "--includedir=$(dev)/include" "--libdir=$(out)/lib" + "--with-bjam=b2" # prevent bootstrapping b2 in configurePhase ] ++ optional enablePython "--with-python=${python.interpreter}" - ++ [ (if stdenv.hostPlatform == stdenv.buildPlatform then "--with-icu=${icu.dev}" else "--without-icu") ] - ++ optional (toolset != null) "--with-toolset=${toolset}"; + ++ optional (toolset != null) "--with-toolset=${toolset}" + ++ [ (if stdenv.hostPlatform == stdenv.buildPlatform then "--with-icu=${icu.dev}" else "--without-icu") ]; buildPhase = '' runHook preBuild - ./b2 ${b2Args} + b2 ${b2Args} runHook postBuild ''; @@ -191,7 +213,7 @@ stdenv.mkDerivation { cp -a tools/boostbook/{xsl,dtd} $dev/share/boostbook/ # Let boost install everything else - ./b2 ${b2Args} install + b2 ${b2Args} install runHook postInstall ''; |