Source: herbstluftwm Version: 0.7.0-1 Severity: wishlist Tags: patch User: reproducible-bui...@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org
Hi! While working on the "reproducible builds" effort [1], we have noticed that herbstluftwm could not be built reproducibly. The attached patch attempts to make the build reproducible by referring to the SOURCE_DATE_EPOCH environment variable [2] for deterministic timestamps instead of using the current system time. However, a fallback is also provided in case SOURCE_DATE_EPOCH is not set. Regards, Fabian Wolff [1] https://wiki.debian.org/ReproducibleBuilds [2] https://reproducible-builds.org/specs/source-date-epoch/
--- a/Makefile +++ b/Makefile @@ -18,6 +18,15 @@ HERBSTLUFTWMDOC = doc/herbstluftwm.txt TUTORIAL = doc/herbstluftwm-tutorial.txt +DATE_FMT = %Y-%m-%d +ifdef SOURCE_DATE_EPOCH + BUILD_DATE ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u "+$(DATE_FMT)") +else + BUILD_DATE ?= $(shell date "+$(DATE_FMT)") +endif + +export CPPFLAGS += -DBUILD_DATE="\"$(BUILD_DATE)\"" + .PHONY: depend all all-nodoc doc install install-nodoc info www .PHONY: cleandoc cleanwww cleandeps clean @@ -93,7 +102,7 @@ doc/%.1 doc/%.7: doc/%.txt version.mk $(call colorecho,DOC,$@) - $(VERBOSE) $(A2X) -f manpage -a "herbstluftwmversion=herbstluftwm $(VERSION)" -a "date=`date +%Y-%m-%d`" $< + $(VERBOSE) $(A2X) -f manpage -a "herbstluftwmversion=herbstluftwm $(VERSION)" -a "date=$(BUILD_DATE)" $< doc/%.html: doc/%.txt version.mk $(call colorecho,DOC,$@) --- a/ipc-client/main.c +++ b/ipc-client/main.c @@ -17,7 +17,7 @@ #include "client-utils.h" #define HERBSTCLIENT_VERSION_STRING \ - "herbstclient " HERBSTLUFT_VERSION " (built on " __DATE__ ")\n" + "herbstclient " HERBSTLUFT_VERSION " (built on " BUILD_DATE ")\n" void print_help(char* command, FILE* file); void init_hook_regex(int argc, char* argv[]); --- a/src/globals.h +++ b/src/globals.h @@ -12,7 +12,7 @@ #define HERBSTLUFT_AUTOSTART "herbstluftwm/autostart" #define WINDOW_MANAGER_NAME "herbstluftwm" #define HERBSTLUFT_VERSION_STRING \ - WINDOW_MANAGER_NAME " " HERBSTLUFT_VERSION " (built on " __DATE__ ")" + WINDOW_MANAGER_NAME " " HERBSTLUFT_VERSION " (built on " BUILD_DATE ")" #define HERBST_FRAME_CLASS "_HERBST_FRAME" #define HERBST_DECORATION_CLASS "_HERBST_DECORATION"