[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 11/11] maint: simplify and improve safety of bootstrap process
From: |
Gary V. Vaughan |
Subject: |
[PATCH v2 11/11] maint: simplify and improve safety of bootstrap process. |
Date: |
Thu, 23 Sep 2010 22:21:28 +0700 |
This is the original 4/4 patch, unchanged from last time. It still
passes `make distcheck' from a clean checkout and build on my mac.
> Assuming strongly that this patch depends upon the semantics of 3/4
> applied, I will review this patch after 3/4 is fixed
I haven't actually tried it separately, but I expect it will still
work even with the current master Makefile.am. Even so, I'd rather
push these in the order I've tested them.
Okay to push?
* Makefile.am (bootstrap_files): List files that need to be
generated at bootstrap time before `./configure && make' can
work. It turns out that this is considerably fewer files than we
had thought necessary previously.
(bootstrap-deps-prep): Ensure minimum set of required substitution
variables are non-empty.
(bootstrap-deps): Depend on `bootstrap' files.
* bootstrap (Generate bootstrap dependencies): Now that
`Makefile.am' is entirely responsible for rebuilding files at
bootstrap time, we need only specify the new `bootstrap-deps'
target, and supply values for the substitutions checked by
`bootstrap-deps-prep'.
* configure.ac (AC_CONFIG_SRCDIR): `libtoolize.in' is not here yet
right after running `bootstrap'. So rely on the presence of
`libltdl/config/libtoolize.m4sh', which is always there.
Signed-off-by: Gary V. Vaughan <address@hidden>
---
ChangeLog | 19 +++++++++++++++++++
Makefile.am | 41 +++++++++++++++++++++++++++++++++++++++++
bootstrap | 17 ++++-------------
configure.ac | 2 +-
4 files changed, 65 insertions(+), 14 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e478899..de9d2c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2010-08-30 Gary V. Vaughan <address@hidden>
+
+ maint: simplify and improve safety of bootstrap process.
+ * Makefile.am (bootstrap_files): List files that need to be
+ generated at bootstrap time before `./configure && make' can
+ work. It turns out that this is considerably fewer files than we
+ had thought necessary previously.
+ (bootstrap-deps-prep): Ensure minimum set of required substitution
+ variables are non-empty.
+ (bootstrap-deps): Depend on `bootstrap' files.
+ * bootstrap (Generate bootstrap dependencies): Now that
+ `Makefile.am' is entirely responsible for rebuilding files at
+ bootstrap time, we need only specify the new `bootstrap-deps'
+ target, and supply values for the substitutions checked by
+ `bootstrap-deps-prep'.
+ * configure.ac (AC_CONFIG_SRCDIR): `libtoolize.in' is not here yet
+ right after running `bootstrap'. So rely on the presence of
+ `libtoolize.m4sh', which is always there.
+
2010-08-31 Gary V. Vaughan <address@hidden>
build: eliminate superfluous temporary files from `Makefile.am'.
diff --git a/Makefile.am b/Makefile.am
index 5d84b2c..54d5674 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -182,6 +182,47 @@ $(srcdir)/libltdl/Makefile.am:
$(srcdir)/libltdl/Makefile.inc
-e '1s,^\(.. Makefile.\)inc.*,\1am -- Process this file with
automake to produce Makefile.in,' > "$@"
chmod a-w "$@"
+## Document the make macros that are needed to build bootstrap-deps
+## dependencies when called from `bootstrap' (developer's machine),
+## where the Makefile.am is fed to make in its raw format before
+## `configure' has found the correct values (on the build machine).
+bootstrap_files = \
+ $(auxdir)/ltmain.sh \
+ $(m4dir)/ltversion.m4 \
+ libltdl/Makefile.am
+
+.PHONY: bootstrap-deps bootstrap-deps-prep
+bootstrap-deps: bootstrap-deps-prep $(bootstrap_files)
+bootstrap-deps-prep:
+## The following variables are substituted by `bootstrap-dep-preps'
+ @exit_cmd=:; \
+ test -z "$(srcdir)" \
+ && echo "ERROR: don't call $(MAKE) with srcdir unset." \
+ && exit_cmd=exit; \
+ test -z "$(M4SH)" \
+ && echo "ERROR: don't call $(MAKE) with M4SH unset." \
+ && exit_cmd=exit; \
+ test -z "$(PACKAGE)" \
+ && echo "ERROR: don't call $(MAKE) with PACKAGE unset." \
+ && exit_cmd=exit; \
+ test -z "$(PACKAGE_BUGREPORT)" \
+ && echo "ERROR: don't call $(MAKE) with PACKAGE_BUGREPORT unset." \
+ && exit_cmd=exit; \
+ test -z "$(PACKAGE_NAME)" \
+ && echo "ERROR: don't call $(MAKE) with PACKAGE_NAME unset." \
+ && exit_cmd=exit; \
+ test -z "$(PACKAGE_URL)" \
+ && echo "ERROR: don't call $(MAKE) with PACKAGE_URL unset." \
+ && exit_cmd=exit; \
+ test -z "$(SED)" \
+ && echo "ERROR: don't call $(MAKE) with SED unset." \
+ && exit_cmd=exit; \
+ test -z "$(VERSION)" \
+ && echo "ERROR: don't call $(MAKE) with VERSION unset." \
+ && exit_cmd=exit; \
+ $$exit_cmd 1
+ rm -f $(bootstrap_files)
+
## Unfortunately, all this bogeyness means that we have to manually
## keep the generated files in libltdl up to date.
diff --git a/bootstrap b/bootstrap
index 78b4d30..e66b151 100755
--- a/bootstrap
+++ b/bootstrap
@@ -126,19 +126,10 @@ $SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d'
$makes > Makefile
# Building distributed files from configure is bad for automake, so we
# generate them here, and have Makefile rules to keep them up to date.
-# We don't have all the substitution values to build ltmain.sh from this
-# script yet, but we need config/ltmain.sh for the libtool commands in
-# configure, and ltversion.m4 to generate configure in the first place:
-rm -f $auxdir/ltmain.sh $m4dir/ltversion.m4
-
-$MAKE ./$auxdir/ltmain.sh ./$m4dir/ltversion.m4 \
- ./libtoolize.in ./tests/defs.in ./tests/package.m4 \
- ./tests/testsuite ./libltdl/Makefile.am ./doc/notes.txt \
- srcdir=. top_srcdir=. PACKAGE="$PACKAGE" VERSION="$VERSION" \
- PACKAGE_NAME="$PACKAGE_NAME" PACKAGE_URL="$PACKAGE_URL" \
- PACKAGE_BUGREPORT="address@hidden" M4SH="$AUTOM4TE --language=m4sh" \
- AUTOTEST="$AUTOM4TE --language=autotest" SED="$SED" MAKEINFO="$MAKEINFO" \
- GREP="$GREP" FGREP="$FGREP" EGREP="$EGREP" LN_S="$LN_S"
+$MAKE bootstrap-deps \
+ M4SH="$AUTOM4TE --language=m4sh" PACKAGE="$PACKAGE" \
+ PACKAGE_BUGREPORT="address@hidden" PACKAGE_NAME="$PACKAGE_NAME" \
+ PACKAGE_URL="$PACKAGE_URL" SED="$SED" srcdir=. VERSION="$VERSION"
rm -f Makefile
diff --git a/configure.ac b/configure.ac
index 63ee8bf..403c4b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -35,7 +35,7 @@ AC_INIT([GNU Libtool], [2.4.1a], address@hidden)
m4_ifndef([AC_PACKAGE_URL],
[AC_SUBST([PACKAGE_URL], [http://www.gnu.org/software/libtool/])])
AC_CONFIG_HEADERS([config.h:config-h.in])
-AC_CONFIG_SRCDIR([libtoolize.in])
+AC_CONFIG_SRCDIR([libtoolize.m4sh])
LT_CONFIG_LTDL_DIR([libltdl], [nonrecursive])
AC_CONFIG_AUX_DIR([libltdl/config])
AC_CONFIG_MACRO_DIR([libltdl/m4])
--
1.7.3
- Re: [PATCH v2 02/11] maint: don't leak developer GREP, SED etc into distribution file., (continued)
- [PATCH v2 03/11] build: compare `revision' rather than `correctver' in Makefile.am., Gary V. Vaughan, 2010/09/23
- [PATCH v2 04/11] build: avoid unnecessary directory changes in Makefile rules., Gary V. Vaughan, 2010/09/23
- [PATCH v2 05/11] build: factor Makefile.am `m4sh' invocations to LT_M4SH., Gary V. Vaughan, 2010/09/23
- [PATCH v2 06/11] build: name temporary files in `Makefile.am' consistently., Gary V. Vaughan, 2010/09/23
- [PATCH v2 09/11] build: eliminate `ltmain.in' intermediate file., Gary V. Vaughan, 2010/09/23
- [PATCH v2 08/11] build: don't hardcode repeated long paths in Makefile rules., Gary V. Vaughan, 2010/09/23
- [PATCH v2 10/11] build: eliminate superfluous temporary files from `Makefile.am'., Gary V. Vaughan, 2010/09/23
- [PATCH v2 11/11] maint: simplify and improve safety of bootstrap process.,
Gary V. Vaughan <=
- [PATCH v2 07/11] build: make better use of automatic variables in `Makefile.am'., Gary V. Vaughan, 2010/09/23