summary refs log tree commit diff
diff options
context:
space:
mode:
authorJanneke Nieuwenhuizen <janneke@gnu.org>2024-04-02 22:00:46 +0200
committerJanneke Nieuwenhuizen <janneke@gnu.org>2024-04-14 10:29:10 +0200
commitb4d2838d511f8fc94458358938493b5a1646d8f7 (patch)
tree4daad44d12ab035cc7f678f2b678c68a7cb926b1
parentb850d77e1149274882042d8e75da6715c260f618 (diff)
downloadguix-b4d2838d511f8fc94458358938493b5a1646d8f7.tar.gz
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
-rw-r--r--doc/local.mk45
1 files changed, 29 insertions, 16 deletions
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 <mthl@gnu.org>
 # Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
 # Copyright © 2019 Timothy Sample <samplet@ngyro.com>
+# Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
 #
 # 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))))