Merge pull request #253031 from reckenrode/pybind11-fix

python3Packages.pybind11: work around clang check
This commit is contained in:
toonn
2023-10-19 19:29:23 +02:00
committed by GitHub
@@ -12,6 +12,7 @@
, pytestCheckHook
, libxcrypt
, makeSetupHook
, darwin
}: let
setupHook = makeSetupHook {
name = "pybind11-setup-hook";
@@ -22,6 +23,19 @@
pythonSitePackages = "${python}/${python.sitePackages}";
};
} ./setup-hook.sh;
# clang 16 defaults to C++17, which results in the use of aligned allocations by pybind11.
# libc++ supports aligned allocations via `posix_memalign`, which is available since 10.6,
# but clang has a check hard-coded requiring 10.13 because thats when Apple first shipped a
# support for C++17 aligned allocations on macOS.
# Tell clang were targeting 10.13 on x86_64-darwin while continuing to use the default SDK.
stdenv' = if stdenv.isDarwin && stdenv.isx86_64
then python.stdenv.override (oldStdenv: {
buildPlatform = oldStdenv.buildPlatform // { darwinMinVersion = "10.13"; };
targetPlatform = oldStdenv.targetPlatform // { darwinMinVersion = "10.13"; };
hostPlatform = oldStdenv.hostPlatform // { darwinMinVersion = "10.13"; };
})
else python.stdenv;
in buildPythonPackage rec {
pname = "pybind11";
version = "2.11.1";
@@ -41,6 +55,8 @@ in buildPythonPackage rec {
buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ];
propagatedBuildInputs = [ setupHook ];
stdenv = stdenv';
dontUseCmakeBuildDir = true;
# Don't build tests if not needed, read the doInstallCheck value at runtime