Source: meson Version: 0.60.1-1 Severity: wishlist Tags: patch User: reproducible-bui...@lists.alioth.debian.org Usertags: timestamps toolchain X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org
Hi, Whilst working on the Reproducible Builds effort we noticed that meson is not generating reproducible .cmake files. For example: │ │ │ ├── ./usr/lib/x86_64-linux-gnu/cmake/xbyak/xbyakConfig.cmake │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ │ │ │ ####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### │ │ │ │ ####### Any changes to this file will be overwritten by the next CMake run #### │ │ │ │ -####### The input file was /build/1st/xbyak-6.00/cmake/meson-config.cmake.in ######## │ │ │ │ +####### The input file was /build/2/xbyak-6.00/2nd/cmake/meson-config.cmake.in ######## (This is from src:xbyak version 6.00-2.) A patch is attached that uses os.path.basename to only include "meson-config.cmake.in" instead of the full path. This not only makes the build reproducible, but it also matches CMake's own behaviour. Specifically, CMakePackageConfigHelpers.cmake does the equivalent transformation using: get_filename_component(inputFileName "${_inputFile}" NAME) Regards, -- ,''`. : :' : Chris Lamb `. `'` la...@debian.org / chris-lamb.co.uk `-
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index 51ee9ee..37838d0 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -299,7 +299,7 @@ class CmakeModule(ExtensionModule): def create_package_file(self, infile, outfile, PACKAGE_RELATIVE_PATH, extra, confdata): package_init = PACKAGE_INIT_BASE.replace('@PACKAGE_RELATIVE_PATH@', PACKAGE_RELATIVE_PATH) - package_init = package_init.replace('@inputFileName@', infile) + package_init = package_init.replace('@inputFileName@', os.path.basename(infile)) package_init += extra package_init += PACKAGE_INIT_SET_AND_CHECK