diff --git a/pkgs/development/libraries/boost/1.59.nix b/pkgs/development/libraries/boost/1.59.nix index 88e584f5e41..a417f3e2639 100644 --- a/pkgs/development/libraries/boost/1.59.nix +++ b/pkgs/development/libraries/boost/1.59.nix @@ -1,8 +1,21 @@ -{ callPackage, fetchurl, ... } @ args: +{ callPackage, fetchurl, fetchpatch, ... } @ args: callPackage ./generic.nix (args // rec { version = "1.59.0"; + boostBuildPatches = [ + # Fixes a segfault on aarch64-darwin from an implicitly defined varargs function. + # https://github.com/boostorg/build/pull/238 + (fetchpatch { + url = "https://github.com/boostorg/build/commit/48e9017139dd94446633480661e5447c7e0d8b1b.diff"; + excludes = [ + # Doesn't apply, isn't critical. + "src/engine/filesys.h" + ]; + sha256 = "sha256-/HLOJKBcGqcK9yBYKSRCSMmTNhCH3sSpK1s3OzkIqx8"; + }) + ]; + src = fetchurl { url = "mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"; sha256 = "1jj1aai5rdmd72g90a3pd8sw9vi32zad46xv5av8fhnr48ir6ykj"; diff --git a/pkgs/development/libraries/boost/generic.nix b/pkgs/development/libraries/boost/generic.nix index 34ab5554e74..b9bdec0cd07 100644 --- a/pkgs/development/libraries/boost/generic.nix +++ b/pkgs/development/libraries/boost/generic.nix @@ -15,6 +15,7 @@ , enableNumpy ? false , taggedLayout ? ((enableRelease && enableDebug) || (enableSingleThreaded && enableMultiThreaded) || (enableShared && enableStatic)) , patches ? [] +, boostBuildPatches ? [] , useMpi ? false , mpi , extraB2Args ? [] @@ -170,6 +171,10 @@ stdenv.mkDerivation { (stdenv.hostPlatform.isMips64n64 && (versionOlder version "1.65")); }; + passthru = { + inherit boostBuildPatches; + }; + preConfigure = optionalString useMpi '' cat << EOF >> user-config.jam using mpi : ${mpi}/bin/mpiCC ; diff --git a/pkgs/development/tools/boost-build/default.nix b/pkgs/development/tools/boost-build/default.nix index 044589a9664..cc15d9a67cc 100644 --- a/pkgs/development/tools/boost-build/default.nix +++ b/pkgs/development/tools/boost-build/default.nix @@ -33,6 +33,8 @@ stdenv.mkDerivation { sourceRoot="$sourceRoot/tools/build" ''; + patches = useBoost.boostBuildPatches or []; + # Upstream defaults to gcc on darwin, but we use clang. postPatch = '' substituteInPlace src/build-system.jam \