From e13df516cb032ea3ebe103228fbb3ef12df4adfb Mon Sep 17 00:00:00 2001 From: "Bernhard M. Wiedemann" Date: Fri, 6 Dec 2024 08:52:25 +0100 Subject: [PATCH] Make tarball creation deterministic for reproducible builds. The reproducible code-path assumes GNU tar is used. If $SOURCE_DATE_EPOCH is not set, it should work the same as before. --- resources/bitmaps_png/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/resources/bitmaps_png/CMakeLists.txt b/resources/bitmaps_png/CMakeLists.txt index 27d7cfd8a9..0dfe60e820 100644 --- a/resources/bitmaps_png/CMakeLists.txt +++ b/resources/bitmaps_png/CMakeLists.txt @@ -897,8 +897,12 @@ else() set( TAR_OUTPUT_FILE "${BITMAP_ARCHIVE_PATH}" ) endif() +set( TARFLAGS cfz ) +if( DEFINED ENV{SOURCE_DATE_EPOCH} ) + set( TARFLAGS --sort=name --mtime=@$ENV{SOURCE_DATE_EPOCH} --clamp-mtime --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime -czf ) +endif() add_custom_target( bitmap_archive ALL - COMMAND ${TAR} cfz "${TAR_OUTPUT_FILE}" . + COMMAND ${TAR} ${TARFLAGS} "${TAR_OUTPUT_FILE}" . DEPENDS ${ALL_PNGS} BYPRODUCTS ${BITMAP_ARCHIVE_PATH} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/png