python3Packages.meson-python: set build-dir in setup hook
The meson-python build directory path is nondeterministic if `build-dir` is not set due to being generated by `tempfile.TemporaryDirectory` by default [1]. This can cause irreproducible builds as seen in [2]. Solution: Use a build directory with a deterministic path by setting `build-dir` [3] and allow consumers to override it via the already established `mesonBuildDir`. Setting `build-dir` also causes the build directory to be _persistent_, i.e., it won't be deleted after the build [4]. [1] https://github.com/mesonbuild/meson-python/blob/0.19.0/mesonpy/__init__.py#L1121 [2] https://github.com/NixOS/nixpkgs/issues/482107 [3] https://github.com/mesonbuild/meson-python/issues/671. [4] https://mesonbuild.com/meson-python/how-to-guides/config-settings.html#using-a-persistent-build-directory
This commit is contained in:
@@ -1,4 +1,16 @@
|
||||
mesonPythonBuildFlagsHook() {
|
||||
# Use a build directory with a deterministic path by setting `build-dir` [1]
|
||||
# and allow consumers to override it via `mesonBuildDir`.
|
||||
# Setting `build-dir` also causes the build directory to be _persistent_,
|
||||
# i.e., it won't be deleted after the build [2].
|
||||
#
|
||||
# [1] https://github.com/mesonbuild/meson-python/issues/671
|
||||
# [2] https://mesonbuild.com/meson-python/how-to-guides/config-settings.html#using-a-persistent-build-directory
|
||||
#
|
||||
: ${mesonBuildDir:=build}
|
||||
appendToVar pypaBuildFlags "-Cbuild-dir=$mesonBuildDir"
|
||||
appendToVar pipBuildFlags "-Cbuild-dir=$mesonBuildDir"
|
||||
|
||||
# Add all of mesonFlags to -Csetup-args for pypa builds
|
||||
local flagsArray=()
|
||||
concatTo flagsArray mesonFlags mesonFlagsArray
|
||||
|
||||
Reference in New Issue
Block a user