From 739d93481f0f64777c74fe445a0c876215cfa377 Mon Sep 17 00:00:00 2001 From: Tom Hunze Date: Fri, 27 Mar 2026 14:15:04 +0100 Subject: [PATCH] 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 --- .../python-modules/meson-python/add-build-flags.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/development/python-modules/meson-python/add-build-flags.sh b/pkgs/development/python-modules/meson-python/add-build-flags.sh index 8604ba9ebe7c..870ad01fb107 100644 --- a/pkgs/development/python-modules/meson-python/add-build-flags.sh +++ b/pkgs/development/python-modules/meson-python/add-build-flags.sh @@ -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