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: Ia8df618178066cad320eecea0299337224e23a73master
parent
b850d77e11
commit
b4d2838d51
45
doc/local.mk
45
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:
|
||||
#
|
||||
# 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
|
||||
# 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 $@ $(srcdir)/doc/version.texi
|
||||
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'
|
||||
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))))
|
||||
|
|
Reference in New Issue