build-bazel-package: added rm of extra local folders for toolchain configuration...
[NixPkgs.git] / pkgs / by-name / bo / boost-build / package.nix
blob89eefca6ba25086b1c8db510673ae4a5058bf695
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   bison,
6   # boost derivation to use for the src and version.
7   # This is used by the boost derivation to build
8   # a b2 matching their version (by overriding this
9   # argument). Infinite recursion is not an issue
10   # since we only look at src and version of boost.
11   useBoost ? { },
14 let
15   defaultVersion = "4.4.1";
18 stdenv.mkDerivation {
19   pname = "boost-build";
20   version = if useBoost ? version then "boost-${useBoost.version}" else defaultVersion;
22   src =
23     useBoost.src or (fetchFromGitHub {
24       owner = "boostorg";
25       repo = "build";
26       rev = defaultVersion;
27       sha256 = "1r4rwlq87ydmsdqrik4ly5iai796qalvw7603mridg2nwcbbnf54";
28     });
30   # b2 is in a subdirectory of boost source tarballs
31   postUnpack = lib.optionalString (useBoost ? src) ''
32     sourceRoot="$sourceRoot/tools/build"
33   '';
35   patches =
36     useBoost.boostBuildPatches or [ ]
37     ++ lib.optional (
38       useBoost ? version && lib.versionAtLeast useBoost.version "1.81"
39     ) ./fix-clang-target.patch;
41   postPatch =
42     lib.optionalString (useBoost ? version && lib.versionAtLeast useBoost.version "1.80") ''
43       # Upstream uses arm64, but nixpkgs uses aarch64.
44       substituteInPlace src/tools/clang.jam \
45         --replace-fail 'arch = arm64' 'arch = aarch64'
46     ''
47     + lib.optionalString (useBoost ? version && lib.versionOlder useBoost.version "1.77") ''
48       substituteInPlace src/build-system.jam \
49         --replace-fail "default-toolset = darwin" "default-toolset = clang-darwin"
50     ''
51     + lib.optionalString (useBoost ? version && lib.versionAtLeast useBoost.version "1.82") ''
52       patchShebangs --build src/engine/build.sh
53     '';
55   nativeBuildInputs = [
56     bison
57   ];
59   buildPhase = ''
60     runHook preBuild
61     ./bootstrap.sh
62     runHook postBuild
63   '';
65   installPhase = ''
66     runHook preInstall
68     ./b2 ${lib.optionalString (stdenv.cc.isClang) "toolset=clang "}install --prefix="$out"
70     # older versions of b2 created this symlink,
71     # which we want to support building via useBoost.
72     test -e "$out/bin/bjam" || ln -s b2 "$out/bin/bjam"
74     runHook postInstall
75   '';
77   meta = with lib; {
78     homepage = "https://www.boost.org/build/";
79     license = lib.licenses.boost;
80     platforms = platforms.unix;
81     maintainers = with maintainers; [ ivan-tkatchev ];
82   };