From b4d2838d511f8fc94458358938493b5a1646d8f7 Mon Sep 17 00:00:00 2001 From: Janneke Nieuwenhuizen Date: Tue, 2 Apr 2024 22:00:46 +0200 Subject: maint: Generate 'doc/version-LANG.texi' reproducibly. * doc/local.mk ($(srcdir)/doc/stamp-vti): Change rule into... (version.texi-from-git): ...this new function. Call it with vti,guix.texi,; and for all MANUAL_LANGUAGES with $(i),po/doc/guix-manual.$(lang).po, -$(lang.po). Change-Id: Ia8df618178066cad320eecea0299337224e23a73 --- doc/local.mk | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) (limited to 'doc') diff --git a/doc/local.mk b/doc/local.mk index a653a32420..6a6864a7f0 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -6,6 +6,7 @@ # Copyright © 2016, 2018 Mathieu Lirzin # Copyright © 2018, 2021 Julien Lepiller # Copyright © 2019 Timothy Sample +# Copyright © 2024 Janneke Nieuwenhuizen # # This file is part of GNU Guix. # @@ -254,22 +255,34 @@ endif # Reproducible tarball -# Generate 'version.texi' reproducibly using metadata from Git rather than -# using metadata from the filesystem. This is expected to generate warnings: +# Define a rule to build `version[LANG].texi' reproducibly using metadata from +# Git rather than using metadata from the filesystem. +define version.texi-from-git +$(srcdir)/doc/stamp-$(1): $(srcdir)/$(2) $(top_srcdir)/configure + $$(AM_V_GEN)set -e; \ + export LANG=C LANGUAGE=C LC_ALL=C LC_TIME=C; \ + export TZ=UTC0; \ + timestamp="$$$$(git log --pretty=format:%ct -n1 -- "$$<" \ + 2>/dev/null \ + || echo $$(SOURCE_DATE_EPOCH))" \ + dmy=$$$$(date --date="@$$$$timestamp" "+%-d %B %Y"); \ + my=$$$$(date --date="@$$$$timestamp" "+%B %Y"); \ + { echo "@set UPDATED $$$$dmy"; \ + echo "@set UPDATED-MONTH $$$$my"; \ + echo "@set EDITION $$$(VERSION)"; \ + echo "@set VERSION $$$(VERSION)"; } > "$$@-t"; \ + mv "$$@-t" "$$@"; \ + cp -p "$$@" "$$(srcdir)/doc/version$(3).texi" +endef + +# Generate rules for stamp-vti and stamp-N that create version.texi and +# version-LANG.texi to override the Autotools versions that use timestamps +# embedded in the file-system. These are expected to generate warnings: # # Makefile:7376: warning: overriding recipe for target 'doc/stamp-vti' # Makefile:5098: warning: ignoring old recipe for target 'doc/stamp-vti' -$(srcdir)/doc/stamp-vti: $(srcdir)/doc/guix.texi $(top_srcdir)/configure - $$(AM_V_GEN)set -e; \ - export LANG=C LANGUAGE=C LC_ALL=C LC_TIME=C; \ - export TZ=UTC0; \ - timestamp=$$(git log --pretty=format:%ct -n1 -- $< 2>/dev/null \ - || echo $(SOURCE_DATE_EPOCH)) \ - dmy=$$(date --date="@$$timestamp" "+%-d %B %Y"); \ - my=$$(date --date="@$$timestamp" "+%B %Y"); \ - { echo "@set UPDATED $$dmy"; \ - echo "@set UPDATED-MONTH $$my"; \ - echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)"; } > $@-t; \ - mv $@-t $@; \ - cp $@ $(srcdir)/doc/version.texi +i:=0 +$(eval $(call version.texi-from-git,vti,doc/guix.texi,)) +$(foreach lang, $(MANUAL_LANGUAGES), \ + $(eval i=$(shell echo $$(($(i)+1)))) \ + $(eval $(call version.texi-from-git,$(i),po/doc/guix-manual.$(lang).po,-$(lang)))) -- cgit v1.2.3