janneke pushed a commit to branch wip-tarball
in repository guix.
commit cb4361af8ad439473f09ba2709f9edaf56b96dea
Author: Janneke Nieuwenhuizen <[email protected]>
AuthorDate: Tue Apr 2 22:00:46 2024 +0200
maint: Generate 'doc/version-LANG.texi' reproducibly.
* doc/local.mk ($(srcdir)/doc/stamp-vti): Change rule into...
(version.texi-from-git): ...this new function.
($(srcdir)/doc/stamp-vti): New dependency.
(override-stamp-rule): New function to generate for Automakes' numbered
language stamps.
Change-Id: Ia8df618178066cad320eecea0299337224e23a73
---
doc/local.mk | 54 ++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 38 insertions(+), 16 deletions(-)
diff --git a/doc/local.mk b/doc/local.mk
index 7bd3e26b16..bc75cb97e2 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -6,6 +6,7 @@
# Copyright © 2016, 2018 Mathieu Lirzin <[email protected]>
# Copyright © 2018, 2021 Julien Lepiller <[email protected]>
# Copyright © 2019 Timothy Sample <[email protected]>
+# Copyright © 2024 Janneke Nieuwenhuizen <[email protected]>
#
# This file is part of GNU Guix.
#
@@ -254,19 +255,40 @@ endif
# Reproducible tarball
-# Generate 'version.texi' reproducibly using metadata from Git rather
-# than using metadata from the filesystem.
-override $(srcdir)/doc/stamp-vti: $(srcdir)/doc/guix.texi
- $(AM_V_GEN)set -e \
- export LC_ALL=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
+# 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
+override $(srcdir)/doc/stamp$(1): $(srcdir)/$(2)
+ $$(AM_V_GEN)set -e \
+ export LC_ALL=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
+
+# Cater for Automake's default stamp-vte
+override $(srcdir)/doc/stamp-vti: $(srcdir)/doc/stamp
+
+# Define a rule for Automake's stamp-N to depend on the reproduciblle stamp%
+# rule above.
+define override-stamp-rule
+$(srcdir)/doc/stamp-$(i): $(srcdir)/doc/stamp-manual.$(2)
+endef
+
+i:=0
+$(foreach lang, $(MANUAL_LANGUAGES), \
+ $(eval i=$(shell echo $$(($(i)+1)))) \
+ $(eval $(call override-stamp-rule,$(i),$(lang))))
+
+$(eval $(call version.texi-from-git,,doc/guix.texi,))
+$(foreach lang, $(MANUAL_LANGUAGES), \
+ $(eval $(call
version.texi-from-git,-manual.$(lang),po/doc/guix-manual.$(lang).po,.$(lang))))