summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2020-09-03 11:40:50 -0400
committerZack Weinberg <zackw@panix.com>2020-09-03 11:40:50 -0400
commit8af9e92c9126813680e668a4a84ae62784d596ab (patch)
tree33c6cb393d8811cb32d93989bc8c412ff38dce57
parent41edf99f9515f3f83398428c39d79e11266a5a0d (diff)
downloadautoconf-8af9e92c9126813680e668a4a84ae62784d596ab.tar.gz
Fetch gnulib files from gitweb.
‘make fetch’ pulls the files maintained by Automake from gitweb, so we always get the HEAD revision at the time of the operation. The files maintained by Gnulib, on the other hand, are just copied from whatever local gnulib checkout you happen to have on your hard drive at the time, which might not have been updated recently and might not even be checked out from gnulib trunk. This patch makes us use the same logic for Gnulib that we do for Automake. It also pulls all of the code out of cfg.mk to a separate shell script. The lists of files to update from each repository are also moved to that file. * build-aux/fetch.sh: New script. Lists of files to fetch from Gnulib and Automake are now kept here. * cfg.mk (fetch): Run fetch.sh, it does all the work. (gnulib-update, autom4te-update, WGETFLAGS, automake_gitweb) (autom4te_files, move_if_change): Delete.
-rwxr-xr-xbuild-aux/fetch.sh77
-rw-r--r--cfg.mk60
2 files changed, 83 insertions, 54 deletions
diff --git a/build-aux/fetch.sh b/build-aux/fetch.sh
new file mode 100755
index 00000000..bbb7d409
--- /dev/null
+++ b/build-aux/fetch.sh
@@ -0,0 +1,77 @@
+#! /bin/sh
+
+: "${WGET=wget}"
+: "${PERL=perl}"
+
+gitweb_base="https://git.savannah.gnu.org/gitweb/?p="
+gitweb_op=";a=blob_plain;hb=HEAD;f="
+
+gnulib_gitweb="${gitweb_base}gnulib.git${gitweb_op}"
+automake_gitweb="${gitweb_base}automake.git${gitweb_op}"
+
+# This list should be in alphabetical order, *except* that this script
+# uses move-if-change itself, so that one should be first.
+gnulib_files="
+ build-aux/move-if-change
+ build-aux/announce-gen
+ build-aux/config.guess
+ build-aux/config.sub
+ build-aux/gendocs.sh
+ build-aux/git-version-gen
+ build-aux/gitlog-to-changelog
+ build-aux/gnupload
+ build-aux/install-sh
+ build-aux/mdate-sh
+ build-aux/texinfo.tex
+ build-aux/update-copyright
+ build-aux/useless-if-before-free
+ build-aux/vc-list-files
+ doc/fdl.texi
+ doc/gendocs_template
+ doc/gnu-oids.texi
+ doc/make-stds.texi
+ doc/standards.texi
+ m4/autobuild.m4
+ top/GNUmakefile
+ top/maint.mk
+"
+
+automake_files="
+ lib/Automake/Channels.pm
+ lib/Automake/FileUtils.pm
+ lib/Automake/Getopt.pm
+ lib/Automake/XFile.pm
+"
+
+srcdir="$1"
+shift
+
+move_if_change="${srcdir}/build-aux/move-if-change"
+
+scratch="$(mktemp -p . -d fetch.XXXXXXXXX)"
+trap "rm -rf '$scratch'" 0
+
+run () {
+ printf '+ %s\n' "$*"
+ "$@" || exit 1
+}
+
+for file in $gnulib_files; do
+ fbase="${file##*/}"
+ destdir="${file%/*}"
+ if [ "$destdir" = top ]; then
+ dest="${srcdir}/${fbase}"
+ else
+ dest="${srcdir}/${file}"
+ fi
+ run "$WGET" -nv -O "${scratch}/${fbase}" "${gnulib_gitweb}${file}"
+ run "$move_if_change" "${scratch}/${fbase}" "$dest"
+done
+
+for file in $automake_files; do
+ fbase="${file##*/}"
+ dest="${srcdir}/lib/Autom4te/${fbase}"
+ run "$WGET" -nv -O "${scratch}/${fbase}" "${automake_gitweb}${file}"
+ run "$PERL" -pi -e 's/Automake::/Autom4te::/g' "${scratch}/${fbase}"
+ run "$move_if_change" "${scratch}/${fbase}" "$dest"
+done
diff --git a/cfg.mk b/cfg.mk
index b9401f11..e6dc4996 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -46,62 +46,14 @@ To: $(announcement_mail-$(RELEASE_TYPE)) \
CC: $(announcement_Cc_) \
Mail-Followup-To: autoconf@gnu.org
-# Update files from gnulib.
-.PHONY: fetch gnulib-update autom4te-update
-fetch: gnulib-update autom4te-update
-
-gnulib-update:
- cp $(gnulib_dir)/build-aux/announce-gen $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/config.guess $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/config.sub $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/gendocs.sh $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/git-version-gen $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/gitlog-to-changelog $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/gnupload $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/install-sh $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/mdate-sh $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/move-if-change $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/texinfo.tex $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/update-copyright $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/useless-if-before-free $(srcdir)/build-aux
- cp $(gnulib_dir)/build-aux/vc-list-files $(srcdir)/build-aux
- cp $(gnulib_dir)/doc/fdl.texi $(srcdir)/doc
- cp $(gnulib_dir)/doc/gendocs_template $(srcdir)/doc
- cp $(gnulib_dir)/doc/gnu-oids.texi $(srcdir)/doc
- cp $(gnulib_dir)/doc/make-stds.texi $(srcdir)/doc
- cp $(gnulib_dir)/doc/standards.texi $(srcdir)/doc
- cp $(gnulib_dir)/m4/autobuild.m4 $(srcdir)/m4
- cp $(gnulib_dir)/top/GNUmakefile $(srcdir)
- cp $(gnulib_dir)/top/maint.mk $(srcdir)
+# Update files maintained in gnulib and autom4te.
+.PHONY: fetch
WGET = wget
-WGETFLAGS = -C off
-
-## Fetch the latest versions of files we care about.
-automake_gitweb = \
- https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;hb=HEAD;
-autom4te_files = \
- Autom4te/Channels.pm \
- Autom4te/FileUtils.pm \
- Autom4te/Getopt.pm \
- Autom4te/XFile.pm
-
-move_if_change = '$(abs_srcdir)'/build-aux/move-if-change
-
-autom4te-update:
- rm -fr Fetchdir > /dev/null 2>&1
- mkdir -p Fetchdir/Autom4te
- for file in $(autom4te_files); do \
- infile=`echo $$file | sed 's/Autom4te/Automake/g'`; \
- $(WGET) $(WGET_FLAGS) \
- "$(automake_gitweb)f=lib/$$infile" \
- -O "Fetchdir/$$file" || exit; \
- done
- perl -pi -e 's/Automake::/Autom4te::/g' Fetchdir/Autom4te/*.pm
- for file in $(autom4te_files); do \
- $(move_if_change) Fetchdir/$$file $(srcdir)/lib/$$file || exit; \
- done
- rm -fr Fetchdir > /dev/null 2>&1
+
+fetch:
+ WGET="$(WGET)" PERL="$(PERL)" \
+ $(SHELL) $(srcdir)/build-aux/fetch.sh "$(abs_top_srcdir)"
# Tests not to run.
local-checks-to-skip ?= \