Le mar. 20 nov. 2018 à 22:40, Oleh Kravchenko <o...@kaa.org.ua> a écrit :
> 20.11.18 23:29, Brad King wrote: > > SOURCE_DATE_EPOCH was created for use by packagers where tools > > already wrap the build. By making it an environment variable > > packagers could jump through any number of build system layers > > with no patching. > > That's makes me confused, because CMake has CPack. > And with CPack process looks like: > - `cmake && make package` > So there are no any packagers tools, all work done with CMake. > The package tool here is CPack. You consider CMake and CPack as monolithic software they were not designed this way (and I personally find it nice to be so). CMake and CPack (or CTest) may work together but they may well be used independently. Moreover they do not run at the same time, have a look at the figure here: https://github.com/dev-cafe/cmake-cookbook/blob/master/figures/cmake-times/cmake-times.jpg And you may see that setting environment var at configure time is relatively far away from packaging time. All that saif you are right CPack may honor SOURCE_DATE_EPOCH, and CMake "may" forward the usage of SOURCE_DATE_EPOCH from configuration time down to CPack time. At least one CPack generator (the DEB one) recently honor SOURCE_DATE_EPOCH https://gitlab.kitware.com/cmake/cmake/commit/548ac51d8ea319c65abefa0a771636893c45014c If you use a https://cmake.org/cmake/help/v3.12/module/CPack.html#variable:CPACK_PROJECT_CONFIG_FILE for your project you may easily set the SOURCE_DATE_EPOCH env var at CPack time, i.e. when CPack runs. > > Build systems configure compilers with command-line flags, not > > environment variables. If you want to do this from within the > > build system then GCC could be taught a new option for that. > Apparently gcc team decided to use env var for that: https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html see associated discussion (I did not read it all): https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html llvm/clang discussion on this does not seem to be closed: https://reviews.llvm.org/D23934 > > > > You could try hacking it with `CMAKE_<LANG>_COMPILER_LAUNCHER`: > > > > > https://cmake.org/cmake/help/v3.13/variable/CMAKE_LANG_COMPILER_LAUNCHER.html > > > > e.g. -DCMAKE_C_COMPILER_LAUNCHER='env;SOURCE_DATE_EPOCH=1' or > > > > ```cmake > > set(CMAKE_C_COMPILER_LAUNCHER env SOURCE_DATE_EPOCH=1) > > ``` > > Thank you, I will try that. > AFAIU this should already work with gcc. I discovered https://reproducible-builds.org/, while reading your question. The goal is nice, and I think CMake/CPack should support that for compiler/[package] build tools that support it. I won't have time to work on patches for that but I'll certainly take time to read/test one if someone is working on it. -- Eric
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake-developers