treewide: format all inactive Nix files

After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build https://github.com/infinisil/treewide-nixpkgs-reformat-script/archive/a08b3a4d199c6124ac5b36a889d9099b4383463f.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
This commit is contained in:
Silvan Mosberger
2024-12-10 20:26:33 +01:00
parent b32a094368
commit 4f0dadbf38
21293 changed files with 701276 additions and 428232 deletions
+17 -13
View File
@@ -1,15 +1,19 @@
{ callPackage, fetchurl, ... } @ args:
{ callPackage, fetchurl, ... }@args:
callPackage ./generic.nix (args // rec {
version = "1.77.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_77_0.html
sha256 = "sha256-/J+F/AMOIzFCkIJBr3qEbmBjCqc4jeml+vsfOiaECFQ=";
};
})
callPackage ./generic.nix (
args
// rec {
version = "1.77.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${
builtins.replaceStrings [ "." ] [ "_" ] version
}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_77_0.html
sha256 = "sha256-/J+F/AMOIzFCkIJBr3qEbmBjCqc4jeml+vsfOiaECFQ=";
};
}
)
+17 -13
View File
@@ -1,15 +1,19 @@
{ callPackage, fetchurl, ... } @ args:
{ callPackage, fetchurl, ... }@args:
callPackage ./generic.nix (args // rec {
version = "1.78.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_78_0.html
sha256 = "8681f175d4bdb26c52222665793eef08490d7758529330f98d3b29dd0735bccc";
};
})
callPackage ./generic.nix (
args
// rec {
version = "1.78.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${
builtins.replaceStrings [ "." ] [ "_" ] version
}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_78_0.html
sha256 = "8681f175d4bdb26c52222665793eef08490d7758529330f98d3b29dd0735bccc";
};
}
)
+17 -12
View File
@@ -1,14 +1,19 @@
{ callPackage, fetchurl, ... } @ args:
{ callPackage, fetchurl, ... }@args:
callPackage ./generic.nix (args // rec {
version = "1.79.0";
callPackage ./generic.nix (
args
// rec {
version = "1.79.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_79_0.html
sha256 = "475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39";
};
})
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${
builtins.replaceStrings [ "." ] [ "_" ] version
}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_79_0.html
sha256 = "475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39";
};
}
)
+17 -12
View File
@@ -1,14 +1,19 @@
{ callPackage, fetchurl, ... } @ args:
{ callPackage, fetchurl, ... }@args:
callPackage ./generic.nix (args // rec {
version = "1.80.0";
callPackage ./generic.nix (
args
// rec {
version = "1.80.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_80_0.html
sha256 = "1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0";
};
})
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${
builtins.replaceStrings [ "." ] [ "_" ] version
}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_80_0.html
sha256 = "1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0";
};
}
)
+17 -12
View File
@@ -1,14 +1,19 @@
{ callPackage, fetchurl, ... } @ args:
{ callPackage, fetchurl, ... }@args:
callPackage ./generic.nix (args // rec {
version = "1.84.0";
callPackage ./generic.nix (
args
// rec {
version = "1.84.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_84_0.html
sha256 = "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454";
};
})
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${
builtins.replaceStrings [ "." ] [ "_" ] version
}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_84_0.html
sha256 = "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454";
};
}
)
+17 -12
View File
@@ -1,14 +1,19 @@
{ callPackage, fetchurl, ... } @ args:
{ callPackage, fetchurl, ... }@args:
callPackage ./generic.nix (args // rec {
version = "1.85.0";
callPackage ./generic.nix (
args
// rec {
version = "1.85.0";
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_85_0.html
sha256 = "7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617";
};
})
src = fetchurl {
urls = [
"mirror://sourceforge/boost/boost_${builtins.replaceStrings [ "." ] [ "_" ] version}.tar.bz2"
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${
builtins.replaceStrings [ "." ] [ "_" ] version
}.tar.bz2"
];
# SHA256 from http://www.boost.org/users/history/version_1_85_0.html
sha256 = "7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617";
};
}
)
+11 -7
View File
@@ -1,12 +1,15 @@
{ lib
, callPackage
, boost-build
, fetchurl
{
lib,
callPackage,
boost-build,
fetchurl,
}:
let
makeBoost = file:
lib.fix (self:
makeBoost =
file:
lib.fix (
self:
callPackage file {
boost-build = boost-build.override {
# useBoost allows us passing in src and version from
@@ -15,7 +18,8 @@ let
};
}
);
in {
in
{
boost177 = makeBoost ./1.77.nix;
boost178 = makeBoost ./1.78.nix;
boost179 = makeBoost ./1.79.nix;
+245 -175
View File
@@ -1,31 +1,52 @@
{ lib, stdenv, icu, expat, zlib, bzip2, zstd, xz, python ? null, fixDarwinDylibNames, libiconv, libxcrypt
, makePkgconfigItem
, copyPkgconfigItems
, boost-build
, fetchpatch
, which
, toolset ? /**/ if stdenv.cc.isClang then "clang"
else if stdenv.cc.isGNU then "gcc"
else null
, enableRelease ? true
, enableDebug ? false
, enableSingleThreaded ? false
, enableMultiThreaded ? true
, enableShared ? !(with stdenv.hostPlatform; isStatic || isMinGW) # problems for now
, enableStatic ? !enableShared
, enablePython ? false
, enableNumpy ? false
, enableIcu ? stdenv.hostPlatform == stdenv.buildPlatform
, taggedLayout ? ((enableRelease && enableDebug) || (enableSingleThreaded && enableMultiThreaded) || (enableShared && enableStatic))
, patches ? []
, boostBuildPatches ? []
, useMpi ? false
, mpi
, extraB2Args ? []
{
lib,
stdenv,
icu,
expat,
zlib,
bzip2,
zstd,
xz,
python ? null,
fixDarwinDylibNames,
libiconv,
libxcrypt,
makePkgconfigItem,
copyPkgconfigItems,
boost-build,
fetchpatch,
which,
toolset ?
if stdenv.cc.isClang then
"clang"
else if stdenv.cc.isGNU then
"gcc"
else
null,
enableRelease ? true,
enableDebug ? false,
enableSingleThreaded ? false,
enableMultiThreaded ? true,
enableShared ? !(with stdenv.hostPlatform; isStatic || isMinGW), # problems for now
enableStatic ? !enableShared,
enablePython ? false,
enableNumpy ? false,
enableIcu ? stdenv.hostPlatform == stdenv.buildPlatform,
taggedLayout ? (
(enableRelease && enableDebug)
|| (enableSingleThreaded && enableMultiThreaded)
|| (enableShared && enableStatic)
),
patches ? [ ],
boostBuildPatches ? [ ],
useMpi ? false,
mpi,
extraB2Args ? [ ],
# Attributes inherit from specific versions
, version, src
, ...
# Attributes inherit from specific versions
version,
src,
...
}:
# We must build at least one type of libraries
@@ -35,66 +56,94 @@ assert enableNumpy -> enablePython;
let
variant = lib.concatStringsSep ","
(lib.optional enableRelease "release" ++
lib.optional enableDebug "debug");
variant = lib.concatStringsSep "," (
lib.optional enableRelease "release" ++ lib.optional enableDebug "debug"
);
threading = lib.concatStringsSep ","
(lib.optional enableSingleThreaded "single" ++
lib.optional enableMultiThreaded "multi");
threading = lib.concatStringsSep "," (
lib.optional enableSingleThreaded "single" ++ lib.optional enableMultiThreaded "multi"
);
link = lib.concatStringsSep ","
(lib.optional enableShared "shared" ++
lib.optional enableStatic "static");
link = lib.concatStringsSep "," (
lib.optional enableShared "shared" ++ lib.optional enableStatic "static"
);
runtime-link = if enableShared then "shared" else "static";
# To avoid library name collisions
layout = if taggedLayout then "tagged" else "system";
needUserConfig = stdenv.hostPlatform != stdenv.buildPlatform || useMpi || (stdenv.hostPlatform.isDarwin && enableShared);
needUserConfig =
stdenv.hostPlatform != stdenv.buildPlatform
|| useMpi
|| (stdenv.hostPlatform.isDarwin && enableShared);
b2Args = lib.concatStringsSep " " ([
"--includedir=$dev/include"
"--libdir=$out/lib"
"-j$NIX_BUILD_CORES"
"--layout=${layout}"
"variant=${variant}"
"threading=${threading}"
"link=${link}"
"-sEXPAT_INCLUDE=${expat.dev}/include"
"-sEXPAT_LIBPATH=${expat.out}/lib"
b2Args = lib.concatStringsSep " " (
[
"--includedir=$dev/include"
"--libdir=$out/lib"
"-j$NIX_BUILD_CORES"
"--layout=${layout}"
"variant=${variant}"
"threading=${threading}"
"link=${link}"
"-sEXPAT_INCLUDE=${expat.dev}/include"
"-sEXPAT_LIBPATH=${expat.out}/lib"
# TODO: make this unconditional
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform ||
# required on mips; see 61d9f201baeef4c4bb91ad8a8f5f89b747e0dfe4
(stdenv.hostPlatform.isMips && lib.versionAtLeast version "1.79")) [
"address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}"
"architecture=${if stdenv.hostPlatform.isMips64
then if lib.versionOlder version "1.78" then "mips1" else "mips"
else if stdenv.hostPlatform.isS390 then "s390x"
else toString stdenv.hostPlatform.parsed.cpu.family}"
# env in host triplet for Mach-O is "macho", but boost binary format for Mach-O is "mach-o"
"binary-format=${if stdenv.hostPlatform.isMacho then "mach-o"
else toString stdenv.hostPlatform.parsed.kernel.execFormat.name}"
"target-os=${toString stdenv.hostPlatform.parsed.kernel.name}"
# TODO: make this unconditional
]
++
lib.optionals
(
stdenv.hostPlatform != stdenv.buildPlatform
||
# required on mips; see 61d9f201baeef4c4bb91ad8a8f5f89b747e0dfe4
(stdenv.hostPlatform.isMips && lib.versionAtLeast version "1.79")
)
[
"address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}"
"architecture=${
if stdenv.hostPlatform.isMips64 then
if lib.versionOlder version "1.78" then "mips1" else "mips"
else if stdenv.hostPlatform.isS390 then
"s390x"
else
toString stdenv.hostPlatform.parsed.cpu.family
}"
# env in host triplet for Mach-O is "macho", but boost binary format for Mach-O is "mach-o"
"binary-format=${
if stdenv.hostPlatform.isMacho then
"mach-o"
else
toString stdenv.hostPlatform.parsed.kernel.execFormat.name
}"
"target-os=${toString stdenv.hostPlatform.parsed.kernel.name}"
# adapted from table in boost manual
# https://www.boost.org/doc/libs/1_66_0/libs/context/doc/html/context/architectures.html
"abi=${if stdenv.hostPlatform.parsed.cpu.family == "arm" then "aapcs"
else if stdenv.hostPlatform.isWindows then "ms"
else if stdenv.hostPlatform.isMips32 then "o32"
else if stdenv.hostPlatform.isMips64n64 then "n64"
else "sysv"}"
] ++ lib.optional (link != "static") "runtime-link=${runtime-link}"
# adapted from table in boost manual
# https://www.boost.org/doc/libs/1_66_0/libs/context/doc/html/context/architectures.html
"abi=${
if stdenv.hostPlatform.parsed.cpu.family == "arm" then
"aapcs"
else if stdenv.hostPlatform.isWindows then
"ms"
else if stdenv.hostPlatform.isMips32 then
"o32"
else if stdenv.hostPlatform.isMips64n64 then
"n64"
else
"sysv"
}"
]
++ lib.optional (link != "static") "runtime-link=${runtime-link}"
++ lib.optional (variant == "release") "debug-symbols=off"
++ lib.optional (toolset != null) "toolset=${toolset}"
++ lib.optional (!enablePython) "--without-python"
++ lib.optional needUserConfig "--user-config=user-config.jam"
++ lib.optional (stdenv.buildPlatform.isDarwin && stdenv.hostPlatform.isLinux) "pch=off"
++ lib.optionals stdenv.hostPlatform.isMinGW [
"threadapi=win32"
] ++ extraB2Args
"threadapi=win32"
]
++ extraB2Args
);
in
@@ -104,54 +153,55 @@ stdenv.mkDerivation {
inherit src version;
patchFlags = [];
patchFlags = [ ];
patches = patches
++ lib.optional stdenv.hostPlatform.isDarwin ./darwin-no-system-python.patch
++ [ ./cmake-paths-173.patch ]
++ lib.optional (version == "1.77.0") (fetchpatch {
url = "https://github.com/boostorg/math/commit/7d482f6ebc356e6ec455ccb5f51a23971bf6ce5b.patch";
relative = "include";
sha256 = "sha256-KlmIbixcds6GyKYt1fx5BxDIrU7msrgDdYo9Va/KJR4=";
})
# Fixes ABI detection
++ lib.optional (version == "1.83.0") (fetchpatch {
url = "https://github.com/boostorg/context/commit/6fa6d5c50d120e69b2d8a1c0d2256ee933e94b3b.patch";
stripLen = 1;
extraPrefix = "libs/context/";
sha256 = "sha256-bCfLL7bD1Rn4Ie/P3X+nIcgTkbXdCX6FW7B9lHsmVW8=";
})
# This fixes another issue regarding ill-formed constant expressions, which is a default error
# in clang 16 and will be a hard error in clang 17.
++ lib.optional (lib.versionOlder version "1.80") (fetchpatch {
url = "https://github.com/boostorg/log/commit/77f1e20bd69c2e7a9e25e6a9818ae6105f7d070c.patch";
relative = "include";
hash = "sha256-6qOiGJASm33XzwoxVZfKJd7sTlQ5yd+MMFQzegXm5RI=";
})
++ lib.optionals (lib.versionOlder version "1.81") [
# libc++ 15 dropped support for `std::unary_function` and `std::binary_function` in C++17+.
# C++17 is the default for clang 16, but clang 15 is also affected in that language mode.
# This patch is for Boost 1.80, but it also applies to earlier versions.
(fetchpatch {
url = "https://www.boost.org/patches/1_80_0/0005-config-libcpp15.patch";
hash = "sha256-ULFMzKphv70unvPZ3o4vSP/01/xbSM9a2TlIV67eXDQ=";
})
# This fixes another ill-formed contant expressions issue flagged by clang 16.
(fetchpatch {
url = "https://github.com/boostorg/numeric_conversion/commit/50a1eae942effb0a9b90724323ef8f2a67e7984a.patch";
patches =
patches
++ lib.optional stdenv.hostPlatform.isDarwin ./darwin-no-system-python.patch
++ [ ./cmake-paths-173.patch ]
++ lib.optional (version == "1.77.0") (fetchpatch {
url = "https://github.com/boostorg/math/commit/7d482f6ebc356e6ec455ccb5f51a23971bf6ce5b.patch";
relative = "include";
hash = "sha256-dq4SVgxkPJSC7Fvr59VGnXkM4Lb09kYDaBksCHo9C0s=";
sha256 = "sha256-KlmIbixcds6GyKYt1fx5BxDIrU7msrgDdYo9Va/KJR4=";
})
# This fixes an issue in Python 3.11 about Py_TPFLAGS_HAVE_GC
(fetchpatch {
name = "python311-compatibility.patch";
url = "https://github.com/boostorg/python/commit/a218babc8daee904a83f550fb66e5cb3f1cb3013.patch";
hash = "sha256-IHxLtJBx0xSy7QEr8FbCPofsjcPuSYzgtPwDlx1JM+4=";
# Fixes ABI detection
++ lib.optional (version == "1.83.0") (fetchpatch {
url = "https://github.com/boostorg/context/commit/6fa6d5c50d120e69b2d8a1c0d2256ee933e94b3b.patch";
stripLen = 1;
extraPrefix = "libs/python/";
extraPrefix = "libs/context/";
sha256 = "sha256-bCfLL7bD1Rn4Ie/P3X+nIcgTkbXdCX6FW7B9lHsmVW8=";
})
]
++ lib.optional (lib.versionAtLeast version "1.81" && stdenv.cc.isClang) ./fix-clang-target.patch;
# This fixes another issue regarding ill-formed constant expressions, which is a default error
# in clang 16 and will be a hard error in clang 17.
++ lib.optional (lib.versionOlder version "1.80") (fetchpatch {
url = "https://github.com/boostorg/log/commit/77f1e20bd69c2e7a9e25e6a9818ae6105f7d070c.patch";
relative = "include";
hash = "sha256-6qOiGJASm33XzwoxVZfKJd7sTlQ5yd+MMFQzegXm5RI=";
})
++ lib.optionals (lib.versionOlder version "1.81") [
# libc++ 15 dropped support for `std::unary_function` and `std::binary_function` in C++17+.
# C++17 is the default for clang 16, but clang 15 is also affected in that language mode.
# This patch is for Boost 1.80, but it also applies to earlier versions.
(fetchpatch {
url = "https://www.boost.org/patches/1_80_0/0005-config-libcpp15.patch";
hash = "sha256-ULFMzKphv70unvPZ3o4vSP/01/xbSM9a2TlIV67eXDQ=";
})
# This fixes another ill-formed contant expressions issue flagged by clang 16.
(fetchpatch {
url = "https://github.com/boostorg/numeric_conversion/commit/50a1eae942effb0a9b90724323ef8f2a67e7984a.patch";
relative = "include";
hash = "sha256-dq4SVgxkPJSC7Fvr59VGnXkM4Lb09kYDaBksCHo9C0s=";
})
# This fixes an issue in Python 3.11 about Py_TPFLAGS_HAVE_GC
(fetchpatch {
name = "python311-compatibility.patch";
url = "https://github.com/boostorg/python/commit/a218babc8daee904a83f550fb66e5cb3f1cb3013.patch";
hash = "sha256-IHxLtJBx0xSy7QEr8FbCPofsjcPuSYzgtPwDlx1JM+4=";
stripLen = 1;
extraPrefix = "libs/python/";
})
]
++ lib.optional (lib.versionAtLeast version "1.81" && stdenv.cc.isClang) ./fix-clang-target.patch;
meta = with lib; {
homepage = "http://boost.org/";
@@ -169,51 +219,52 @@ stdenv.mkDerivation {
inherit boostBuildPatches;
};
preConfigure = lib.optionalString useMpi ''
cat << EOF >> user-config.jam
using mpi : ${lib.getDev mpi}/bin/mpiCC ;
EOF
''
# 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.
+ lib.optionalString (stdenv.hostPlatform.isDarwin && enableShared) ''
cat << EOF >> user-config.jam
using clang-darwin : : ${stdenv.cc.targetPrefix}c++
: <linkflags>"-rpath $out/lib/"
<archiver>$AR
<ranlib>$RANLIB
;
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.
+ lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
cat << EOF >> user-config.jam
using gcc : cross : ${stdenv.cc.targetPrefix}c++
: <archiver>$AR
<ranlib>$RANLIB
;
preConfigure =
lib.optionalString useMpi ''
cat << EOF >> user-config.jam
using mpi : ${lib.getDev mpi}/bin/mpiCC ;
EOF
''
# 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.
+ lib.optionalString (stdenv.hostPlatform.isDarwin && enableShared) ''
cat << EOF >> user-config.jam
using clang-darwin : : ${stdenv.cc.targetPrefix}c++
: <linkflags>"-rpath $out/lib/"
<archiver>$AR
<ranlib>$RANLIB
;
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.
+ lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
cat << EOF >> user-config.jam
using gcc : cross : ${stdenv.cc.targetPrefix}c++
: <archiver>$AR
<ranlib>$RANLIB
;
using clang : cross : ${stdenv.cc.targetPrefix}c++
: <archiver>$AR
<ranlib>$RANLIB
;
EOF
''
# b2 needs to be explicitly told how to find Python when cross-compiling
+ lib.optionalString enablePython ''
cat << EOF >> user-config.jam
using python : : ${python.interpreter}
: ${python}/include/python${python.pythonVersion}
: ${python}/lib
;
EOF
'';
using clang : cross : ${stdenv.cc.targetPrefix}c++
: <archiver>$AR
<ranlib>$RANLIB
;
EOF
''
# b2 needs to be explicitly told how to find Python when cross-compiling
+ lib.optionalString enablePython ''
cat << EOF >> user-config.jam
using python : : ${python.interpreter}
: ${python}/include/python${python.pythonVersion}
: ${python}/lib
;
EOF
'';
env = {
NIX_CFLAGS_LINK = lib.optionalString stdenv.hostPlatform.isDarwin "-headerpad_max_install_names";
@@ -236,24 +287,38 @@ stdenv.mkDerivation {
enableParallelBuilding = true;
nativeBuildInputs = [ which boost-build copyPkgconfigItems ]
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
buildInputs = [ expat zlib bzip2 libiconv ]
nativeBuildInputs = [
which
boost-build
copyPkgconfigItems
] ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
buildInputs =
[
expat
zlib
bzip2
libiconv
]
++ lib.optional (lib.versionAtLeast version "1.69") zstd
++ [ xz ]
++ lib.optional enableIcu icu
++ lib.optionals enablePython [ libxcrypt python ]
++ lib.optionals enablePython [
libxcrypt
python
]
++ lib.optional enableNumpy python.pkgs.numpy;
configureScript = "./bootstrap.sh";
configurePlatforms = [];
configurePlatforms = [ ];
dontDisableStatic = true;
dontAddStaticConfigureFlags = true;
configureFlags = [
"--includedir=$(dev)/include"
"--libdir=$(out)/lib"
"--with-bjam=b2" # prevent bootstrapping b2 in configurePhase
] ++ lib.optional (toolset != null) "--with-toolset=${toolset}"
configureFlags =
[
"--includedir=$(dev)/include"
"--libdir=$(out)/lib"
"--with-bjam=b2" # prevent bootstrapping b2 in configurePhase
]
++ lib.optional (toolset != null) "--with-toolset=${toolset}"
++ [ (if enableIcu then "--with-icu=${icu.dev}" else "--without-icu") ];
buildPhase = ''
@@ -275,14 +340,19 @@ stdenv.mkDerivation {
runHook postInstall
'';
postFixup = ''
# Make boost header paths relative so that they are not runtime dependencies
cd "$dev" && find include \( -name '*.hpp' -or -name '*.h' -or -name '*.ipp' \) \
-exec sed '1s/^\xef\xbb\xbf//;1i#line 1 "{}"' -i '{}' \;
'' + lib.optionalString stdenv.hostPlatform.isMinGW ''
$RANLIB "$out/lib/"*.a
'';
postFixup =
''
# Make boost header paths relative so that they are not runtime dependencies
cd "$dev" && find include \( -name '*.hpp' -or -name '*.h' -or -name '*.ipp' \) \
-exec sed '1s/^\xef\xbb\xbf//;1i#line 1 "{}"' -i '{}' \;
''
+ lib.optionalString stdenv.hostPlatform.isMinGW ''
$RANLIB "$out/lib/"*.a
'';
outputs = [ "out" "dev" ];
outputs = [
"out"
"dev"
];
setOutputFlags = false;
}