libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 5/6] Don't leak developer GREP, SED etc into distribution file.


From: Gary V. Vaughan
Subject: [PATCH 5/6] Don't leak developer GREP, SED etc into distribution file.
Date: Tue, 31 Aug 2010 13:43:19 +0700

From: Gary V. Vaughan <address@hidden>

* bootstrap (rebuild): Set the shell variable `revision' rather
than `correctver' for clarity.
(edit): Split into two parts...
(bootstrap_edit): ...substitutions that should happen at bootstrap
time...
(configure_edit): ...and substitution that should not happen until
configure time.
* bootstrap: Move the bootstrap related section up towards the top
of the file.
(libltdl/m4/ltversion.m4): Extract `$macro_revision' from this
file for direct comparison with `$revision', rather than munging
the file's serial number.  Use `bootstrap_edit' for substitutions
when generating from `ltversion.in'.
(libltdl/config/ltmain.sh): Similarly, extract `$package_revision'
for comparison with rebuild's `$revision' setting, and make
bootstrap time substitutions with `bootstrap_edit'.
(libtool): Likewise.
(libtoolize): Use `configure_edit' for substitutions at configure
time.
(tests/package.m4, tests/defs): Likewise.
* HACKING (Release Procedure): Remove the note to workaround the
bug fixed by this changeset.
* NEWS (Bug fixes): Mention that this bug is now fixed.

Signed-off-by: Gary V. Vaughan <address@hidden>
---
 ChangeLog   |   25 +++++++
 HACKING     |    9 ---
 Makefile.am |  211 ++++++++++++++++++++++++++++++-----------------------------
 NEWS        |    2 +
 4 files changed, 134 insertions(+), 113 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4e6e5a0..218bd48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,30 @@
 2010-08-30  Gary V. Vaughan <address@hidden>
 
+       Don't leak developer GREP, SED etc into distribution file.
+       * bootstrap (rebuild): Set the shell variable `revision' rather
+       than `correctver' for clarity.
+       (edit): Split into two parts...
+       (bootstrap_edit): ...substitutions that should happen at bootstrap
+       time...
+       (configure_edit): ...and substitution that should not happen until
+       configure time.
+       * bootstrap: Move the bootstrap related section up towards the top
+       of the file.
+       (libltdl/m4/ltversion.m4): Extract `$macro_revision' from this
+       file for direct comparison with `$revision', rather than munging
+       the file's serial number.  Use `bootstrap_edit' for substitutions
+       when generating from `ltversion.in'.
+       (libltdl/config/ltmain.sh): Similarly, extract `$package_revision'
+       for comparison with rebuild's `$revision' setting, and make
+       bootstrap time substitutions with `bootstrap_edit'.
+       (libtool): Likewise.
+       (libtoolize): Use `configure_edit' for substitutions at configure
+       time.
+       (tests/package.m4, tests/defs): Likewise.
+       * HACKING (Release Procedure): Remove the note to workaround the
+       bug fixed by this changeset.
+       * NEWS (Bug fixes): Mention that this bug is now fixed.
+
        Rewrite bootstrap script for consistency with our other shell code.
        * bootstrap: Add a proper option parsing loop, along with copies
        of supporting functions from `libltd/m4/getopt.m4sh' and
diff --git a/HACKING b/HACKING
index 19b4b66..9d213ae 100644
--- a/HACKING
+++ b/HACKING
@@ -620,15 +620,6 @@ or obtained by writing to the Free Software Foundation, 
Inc.,
 
 * Update NEWS, ChangeLog.
 
-* Until the bug that leaks developer tool paths into the release tarballs
-  from ./bootstrap is fixed, make sure the right tools are first in your
-  PATH and then:
-       export EGREP=egrep
-       export FGREP=fgrep
-       export GREP=grep
-       export MAKE=make
-       export SED=sed
-
 * Run ./bootstrap.
 
 * Run ./configure (or create a build directory first and run configure
diff --git a/Makefile.am b/Makefile.am
index de3eafe..f6c0a9a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -57,89 +57,13 @@ timestamp = set dummy `$(MKSTAMP) $(srcdir)`; shift; \
          *) TIMESTAMP="" ;; \
        esac
 
-rebuild = rebuild=:; $(timestamp); correctver=$$1
-
-
-## ---------------- ##
-## Libtool scripts. ##
-## ---------------- ##
-
-# The libtool distributor and the standalone libtool script.
-bin_SCRIPTS = libtoolize libtool
-
-libtoolize: $(srcdir)/libtoolize.in $(top_builddir)/config.status
-       rm -f libtoolize.tmp libtoolize
-       $(timestamp); \
-       input="libtoolize.m4sh"; \
-       $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
-               -e 's,@aclocal_DATA\@,$(aclocalfiles),g' \
-               -e "s,@pkgltdl_files\@,$(ltdldatafiles),g" \
-               -e "s,@pkgconfig_files\@,$(auxfiles),g" \
-               $(srcdir)/libtoolize.in > libtoolize.tmp
-       chmod a+x libtoolize.tmp
-       chmod a-w libtoolize.tmp
-       mv -f libtoolize.tmp libtoolize
-
-# Use `$(srcdir)' for the benefit of non-GNU makes: this is
-# how libtoolize.in appears in our dependencies.
-EXTRA_DIST += libtoolize.m4sh
-$(srcdir)/libtoolize.in: $(sh_files) libtoolize.m4sh Makefile.am
-       cd $(srcdir); \
-       rm -f libtoolize.in; \
-       $(M4SH) -B $(auxdir) libtoolize.m4sh > libtoolize.in
-
-# We used to do this with a 'stamp-vcl' file, but non-gmake builds
-# would rerun configure on every invocation, so now we manually
-# check the version numbers from the build rule when necessary.
-libtool: $(top_builddir)/config.status $(srcdir)/$(auxdir)/ltmain.sh ChangeLog
-       @target=libtool; $(rebuild); \
-       if test -f "$$target"; then \
-         set dummy `./$$target --version | sed 1q`; actualver="$$5"; \
-         test "$$actualver" = "$$correctver" && rebuild=false; \
-       fi; \
-       for prereq in $?; do \
-         case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
-       done; \
-       if $$rebuild; then \
-         echo $(SHELL) ./config.status $$target; \
-         cd $(top_builddir) && $(SHELL) ./config.status $$target; \
-       fi
-
-.PHONY: configure-subdirs
-configure-subdirs distdir: $(DIST_MAKEFILE_LIST)
address@hidden@:
-       dir=`echo $@ | sed 's,^[^/]*$$,.,;s,/[^/]*$$,,'`; \
-       test -d $$dir || mkdir $$dir || exit 1; \
-       abs_srcdir=`$(lt__cd) $(srcdir) && pwd`; \
-       (cd $$dir && $$abs_srcdir/$$dir/configure --with-dist) || exit 1
+rebuild = rebuild=:; $(timestamp); revision=$$1
 
 
 # ---------- #
 # Bootstrap. #
 # ---------- #
 
-edit = sed \
-       -e 's,@EGREP\@,$(EGREP),g' \
-       -e 's,@FGREP\@,$(FGREP),g' \
-       -e 's,@GREP\@,$(GREP),g' \
-       -e 's,@LN_S\@,$(LN_S),g' \
-       -e 's,@MACRO_VERSION\@,$(VERSION),g' \
-       -e 's,@PACKAGE\@,$(PACKAGE),g' \
-       -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-       -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' \
-       -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
-       -e 's,@PACKAGE_STRING\@,$(PACKAGE_NAME) $(VERSION),g' \
-       -e 's,@PACKAGE_TARNAME\@,$(PACKAGE),g' \
-       -e 's,@PACKAGE_VERSION\@,$(VERSION),g' \
-       -e 's,@SED\@,$(SED),g' \
-       -e 's,@VERSION\@,$(VERSION),g' \
-       -e 's,@aclocaldir\@,$(aclocaldir),g' \
-       -e 's,@datadir\@,$(datadir),g' \
-       -e 's,@pkgdatadir\@,$(pkgdatadir),g' \
-       -e 's,@host_triplet\@,$(host_triplet),g' \
-       -e 's,@prefix\@,$(prefix),g' \
-       -e "s,@configure_input\@,Generated from $$input.,g"
-
 sh_files       = $(auxdir)/general.m4sh $(auxdir)/getopt.m4sh
 EXTRA_DIST     += bootstrap $(srcdir)/libtoolize.in $(auxdir)/ltmain.m4sh \
                  $(auxdir)/mkstamp $(sh_files) \
@@ -151,6 +75,25 @@ EXTRA_DIST     += bootstrap $(srcdir)/libtoolize.in 
$(auxdir)/ltmain.m4sh \
 CLEANFILES     += libtool libtoolize libtoolize.tmp \
                  $(auxdir)/ltmain.tmp $(m4dir)/ltversion.tmp
 
+## These are the replacements that need to be made at bootstrap time,
+## because they must be static in distributed files, and not accidentally
+## changed by configure running on the build machine.
+bootstrap_edit  = sed \
+                 -e "s,@configure_input\@,Generated from $$input.,g" \
+                 -e 's,@MACRO_VERSION\@,$(VERSION),g' \
+                 -e "s,@MACRO_REVISION\@,$$revision,g" \
+                 -e "s,@MACRO_SERIAL\@,$$serial,g" \
+                 -e 's,@PACKAGE\@,$(PACKAGE),g' \
+                 -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
+                 -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' \
+                 -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
+                 -e "s,@package_revision\@,$$revision,g" \
+                 -e 's,@PACKAGE_STRING\@,$(PACKAGE_NAME) $(VERSION),g' \
+                 -e 's,@PACKAGE_TARNAME\@,$(PACKAGE),g' \
+                 -e 's,@PACKAGE_VERSION\@,$(VERSION),g' \
+                 -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
+                 -e 's,@VERSION\@,$(VERSION),g'
+
 ## We build ltversion.m4 here, instead of from config.status,
 ## because config.status is rerun each time one of configure's
 ## dependencies change and ltversion.m4 happens to be a configure
@@ -159,15 +102,14 @@ CLEANFILES     += libtool libtoolize libtoolize.tmp \
 ## We used to do this with a 'stamp-vcl' file, but non-gmake builds
 ## would rerun configure on every invocation, so now we manually
 ## check the version numbers from the build rule when necessary.
-## Use `$(srcdir)/m4' for the benefit of non-GNU makes: this is
+## Use `$(srcdir)/$(m4dir)' for the benefit of non-GNU makes: this is
 ## how ltversion.m4 appears in our dependencies.
 EXTRA_DIST += $(m4dir)/ltversion.in $(srcdir)/$(m4dir)/ltversion.m4
 $(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in configure.ac ChangeLog
        @target='$(srcdir)/$(m4dir)/ltversion.m4'; $(rebuild); \
        if test -f "$$target"; then \
-         set dummy `sed -n '/^# serial /p' "$$target"`; shift; \
-         actualver=1.$$3; \
-         test "$$actualver" = "$$correctver" && rebuild=false; \
+         eval `sed -n '/^macro_revision=/p' "$$target"`; \
+         test "$$macro_revision" = "$$revision" && rebuild=false; \
        fi; \
        for prereq in $?; do \
          case $$prereq in *ChangeLog | *configure.ac);; *) rebuild=:;; esac; \
@@ -175,14 +117,12 @@ $(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in 
configure.ac ChangeLog
        if $$rebuild; then \
          cd $(srcdir); \
          rm -f $(m4dir)/ltversion.tmp; \
-         serial=`echo "$$correctver" | sed 's,^1[.],,g'`; \
+         serial=`echo "$$revision" | sed 's,^[1-9][0-9]*[.],,g'`; \
          input="ltversion.in"; \
-         echo $(edit) -e "s,@MACRO_REVISION\@,$$correctver,g" \
-           -e "s,@MACRO_SERIAL\@,$$serial,g" \
+         echo $(bootstrap_edit) \
            $(srcdir)/$(m4dir)/ltversion.in \> $(srcdir)/$(m4dir)/ltversion.m4; 
\
-         $(edit) -e "s,@MACRO_REVISION\@,$$correctver,g" \
-                 -e "s,@MACRO_SERIAL\@,$$serial,g" \
-                 $(m4dir)/ltversion.in > $(m4dir)/ltversion.tmp; \
+         $(bootstrap_edit) \
+             $(m4dir)/ltversion.in > $(m4dir)/ltversion.tmp; \
          chmod a-w $(m4dir)/ltversion.tmp; \
          mv -f $(m4dir)/ltversion.tmp $(m4dir)/ltversion.m4; \
        fi
@@ -192,7 +132,7 @@ $(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in 
configure.ac ChangeLog
 ## would rerun configure on every invocation, so now we manually
 ## check the version numbers from the build rule when necessary.
 ## !WARNING! If you edit this rule to change the contents of ltmain.sh,
-##           you must `touch $(srcdir)/$(auxdir)/ltmain.in' from the
+##           you must `touch $(srcdir)/$(auxdir)/ltmain.m4sh' from the
 ##           shell if you need ltmain.sh to be regenerated.  Ideally, we
 ##           should make this rule depend on Makefile but that will break
 ##           distcheck (at least) by rebuilding ltmain.sh in the source
@@ -202,8 +142,7 @@ $(srcdir)/$(auxdir)/ltmain.sh: $(sh_files) 
$(auxdir)/ltmain.m4sh configure.ac Ch
        @target='$(srcdir)/$(auxdir)/ltmain.sh'; $(rebuild); \
        if test -f "$$target"; then \
          eval `sed -n '/^package_revision=/p' "$$target"`; \
-         actualver=$$package_revision; \
-         test "$$actualver" = "$$correctver" && rebuild=false; \
+         test "$$package_revision" = "$$revision" && rebuild=false; \
        fi; \
        for prereq in $?; do \
          case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
@@ -217,12 +156,10 @@ $(srcdir)/$(auxdir)/ltmain.sh: $(sh_files) 
$(auxdir)/ltmain.m4sh configure.ac Ch
          $(M4SH) -B $(auxdir) $(auxdir)/ltmain.m4sh \
            > $(auxdir)/ltmain.in; \
          input="ltmain.m4sh"; \
-         echo $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
-           -e "s,@package_revision\@,$$correctver," \
+         echo $(bootstrap_edit) \
            $(srcdir)/$(auxdir)/ltmain.in "> $$target"; \
-         $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
-               -e "s,@package_revision\@,$$1,g" \
-               $(auxdir)/ltmain.in > $(auxdir)/ltmain.tmp; \
+         $(bootstrap_edit) \
+           $(auxdir)/ltmain.in > $(auxdir)/ltmain.tmp; \
          rm -f $(auxdir)/ltmain.in; \
          chmod a-w $(auxdir)/ltmain.tmp; \
          mv -f $(auxdir)/ltmain.tmp $(auxdir)/ltmain.sh; \
@@ -264,6 +201,79 @@ LTDL_BOOTSTRAP_DEPS = $(srcdir)/libltdl/aclocal.m4 \
 
 all-local: $(LTDL_BOOTSTRAP_DEPS)
 
+
+## ---------------- ##
+## Libtool scripts. ##
+## ---------------- ##
+
+configure_edit = $(bootstrap_edit) \
+       -e 's,@aclocal_DATA\@,$(aclocalfiles),g' \
+       -e 's,@aclocaldir\@,$(aclocaldir),g' \
+       -e 's,@datadir\@,$(datadir),g' \
+       -e 's,@EGREP\@,$(EGREP),g' \
+       -e 's,@FGREP\@,$(FGREP),g' \
+       -e 's,@GREP\@,$(GREP),g' \
+       -e 's,@host_triplet\@,$(host_triplet),g' \
+       -e 's,@LN_S\@,$(LN_S),g' \
+       -e "s,@pkgconfig_files\@,$(auxfiles),g" \
+       -e 's,@pkgdatadir\@,$(pkgdatadir),g' \
+       -e "s,@pkgltdl_files\@,$(ltdldatafiles),g" \
+       -e 's,@prefix\@,$(prefix),g' \
+       -e 's,@SED\@,$(SED),g'
+
+# The libtool distributor and the standalone libtool script.
+bin_SCRIPTS = libtoolize libtool
+
+libtoolize: $(srcdir)/libtoolize.in $(top_builddir)/config.status
+       rm -f libtoolize.tmp libtoolize
+       $(timestamp); \
+       input="libtoolize.m4sh"; \
+       $(configure_edit) \
+               $(srcdir)/libtoolize.in > libtoolize.tmp
+       chmod a+x libtoolize.tmp
+       chmod a-w libtoolize.tmp
+       mv -f libtoolize.tmp libtoolize
+
+# Use `$(srcdir)' for the benefit of non-GNU makes: this is
+# how libtoolize.in appears in our dependencies.
+EXTRA_DIST += libtoolize.m4sh
+$(srcdir)/libtoolize.in: $(sh_files) libtoolize.m4sh Makefile.am
+       cd $(srcdir); \
+       rm -f libtoolize.in; \
+       $(M4SH) -B $(auxdir) libtoolize.m4sh > libtoolize.in
+
+# We used to do this with a 'stamp-vcl' file, but non-gmake builds
+# would rerun configure on every invocation, so now we manually
+# check the version numbers from the build rule when necessary.
+libtool: $(top_builddir)/config.status $(srcdir)/$(auxdir)/ltmain.sh ChangeLog
+       @target=libtool; $(rebuild); \
+       if test -f "$$target"; then \
+         eval `sed -n '/^package_revision=/p' "$$target"`; \
+         test "$$package_revision" = "$$revision" && rebuild=false; \
+       fi; \
+       for prereq in $?; do \
+         case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
+       done; \
+       if $$rebuild; then \
+         echo $(SHELL) ./config.status $$target; \
+         cd $(top_builddir) && $(SHELL) ./config.status $$target; \
+       fi
+
+.PHONY: configure-subdirs
+configure-subdirs distdir: $(DIST_MAKEFILE_LIST)
address@hidden@:
+       dir=`echo $@ | sed 's,^[^/]*$$,.,;s,/[^/]*$$,,'`; \
+       test -d $$dir || mkdir $$dir || exit 1; \
+       abs_srcdir=`$(lt__cd) $(srcdir) && pwd`; \
+       (cd $$dir && $$abs_srcdir/$$dir/configure --with-dist) || exit 1
+
+
+## -------- ##
+## Libltdl. ##
+## -------- ##
+
+include libltdl/Makefile.inc
+
 EXTRA_DIST += $(srcdir)/libltdl/stamp-mk $(m4dir)/lt~obsolete.m4
 
 $(srcdir)/libltdl/Makefile.in: $(srcdir)/libltdl/Makefile.am \
@@ -301,13 +311,6 @@ $(srcdir)/libltdl/config-h.in: $(sub_configure_deps)
        touch $@
 
 
-## -------- ##
-## Libltdl. ##
-## -------- ##
-
-include libltdl/Makefile.inc
-
-
 ## -------------- ##
 ## Documentation. ##
 ## -------------- ##
@@ -551,7 +554,7 @@ $(srcdir)/tests/package.m4: $(srcdir)/configure.ac 
Makefile.am
          echo 'm4_define([AT_PACKAGE_STRING],    address@hidden@])'; \
          echo 'm4_define([AT_PACKAGE_BUGREPORT], address@hidden@])'; \
          echo 'm4_define([AT_PACKAGE_URL],       address@hidden@])'; \
-       } | $(edit) > $(srcdir)/tests/package.m4
+       } | $(configure_edit) > $(srcdir)/tests/package.m4
 
 tests/atconfig: $(top_builddir)/config.status
        $(SHELL) ./config.status tests/atconfig
@@ -897,7 +900,7 @@ check-recursive: tests/defs
 tests/defs: $(srcdir)/tests/defs.in
        rm -f tests/defs.tmp tests/defs; \
        input="defs.m4sh"; \
-       $(edit) $(srcdir)/tests/defs.in > tests/defs.tmp; \
+       $(configure_edit) $(srcdir)/tests/defs.in > tests/defs.tmp; \
        mv -f tests/defs.tmp tests/defs
 
 # Use `$(srcdir)/tests' for the benefit of non-GNU makes: this is
diff --git a/NEWS b/NEWS
index 688bdca..90a5e6e 100644
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,8 @@ New in 2.2.12 2010-08-??: git version 2.2.11a, Libtool team:
   - Warnings from Autoconf v2.67-36-g1e604ec about incomplete programs
     passed to AC_*_IFELSE tests have been fixed.
   - On IRIX, the test for -Wl,-exported_symbol now also works with gfortran.
+  - The bug that leaked developer tool paths into the release tarballs
+    from ./bootstrap is fixed.
 
 New in 2.2.10 2010-06-10: git version 2.2.9a, Libtool team:
 
-- 
1.7.2.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]