Bug#913021: carbon-c-relay: make the build reproducible
Source: carbon-c-relay Version: 3.2-1 Severity: wishlist Tags: patch X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org Hi there, While working on the reproducible builds project (https://wiki.debian.org/ReproducibleBuilds), we noticed that carbon-c-relay could not be built reproducibly. The attached patch changes the build system to first attempt to use the SOURCE_DATE_EPOCH envvar (https://reproducible-builds.org/specs/source-date-epoch/) to determine build date, then falls back to the git commit date, then the current date. Best, -Nick Gregory begin patch --- Makefile.am.orig 2017-10-21 10:39:41.0 -0400 +++ Makefile.am 2018-11-05 22:45:30.772368908 -0500 @@ -16,7 +16,11 @@ CFLAGS ?= -O2 -Wall -Wshadow -pipe -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always 2>/dev/null || date +%F) +GIT_VERSION := $(shell \ + date -u -d "@${SOURCE_DATE_EPOCH}" "+%F" 2>/dev/null || \ + date -u -r "${SOURCE_DATE_EPOCH}" "+%F" 2>/dev/null || \ + git describe --abbrev=6 --dirty --always 2>/dev/null || \ + date +%F) GVCFLAGS = -DGIT_VERSION=\"$(GIT_VERSION)\" override CFLAGS += $(GVCFLAGS) -pthread
Bug#912299: blender: make the build reproducible
Source: blender Version: 2.79.b+dfsg0-4 Severity: wishlist Tags: patch X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org Hi there, While working on the reproducible builds project (https://wiki.debian.org/ReproducibleBuilds), we noticed that blender could not be built reproducibly. The attached patch changes the build system to use the SOURCE_DATE_EPOCH envvar (if set) in place of the current build date/time to make blender build reproducibly. Best, -Nick Gregory begin patch diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake index a43b99f..ab7d3e3 100644 --- a/build_files/cmake/buildinfo.cmake +++ b/build_files/cmake/buildinfo.cmake @@ -148,12 +148,21 @@ endif() # BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake # but BUILD_DATE and BUILD_TIME are platform dependent if(UNIX) - if(NOT BUILD_DATE) - execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - if(NOT BUILD_TIME) - execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() +if(DEFINED ENV{SOURCE_DATE_EPOCH}) +execute_process(COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" "+%Y-%m-%d" +OUTPUT_VARIABLE BUILD_DATE +OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" "+%H:%M:%S" +OUTPUT_VARIABLE BUILD_TIME +OUTPUT_STRIP_TRAILING_WHITESPACE) +else() +if(NOT BUILD_DATE) +execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +if(NOT BUILD_TIME) +execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +endif() elseif(WIN32) if(NOT BUILD_DATE) execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)