>From cab362eee5f19c02ed6719449d1d27644f8ffc93 Mon Sep 17 00:00:00 2001 Message-Id: In-Reply-To: References: From: Stefano Lattarini Date: Wed, 30 Oct 2013 21:41:39 +0000 Subject: [PATCH 2/2] distcheck: don't allow overriding of --prefix and --srcdir by the user Not trough AM_DISTCHECK_FLAGS, nor through DISTCHECK_FLAGS. Apparently, some packages got in the habit of relaying all the options passed to the original ./configure invocation through to the configure invocations in "make distcheck". This was causing problems, because it also passed through the original --srcdir and --prefix options. Fixes: expose bug#14991 (relates to 'distcheck') * lib/am/distdir.am (distcheck): Pass the hard-coded --srcdir and --prefix options *after* both the developer-defined options in $(AM_DISTCHECK_FLAGS) and the user-defined options in $(DISTCHECK_FLAGS). * t/list-of-tests.mk (XFAIL_TESTS): Remove the now-passing test 'distcheck-no-destdist-or-srcdir-override.sh'. * doc/automake.texi (Checking the Distribution): Update. * NEWS: Likewise. Signed-off-by: Stefano Lattarini --- NEWS | 3 +++ doc/automake.texi | 17 ++++++++++++----- lib/am/distdir.am | 11 +++++++---- t/list-of-tests.mk | 1 - 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index aaec7c0..77dcbbc 100644 --- a/NEWS +++ b/NEWS @@ -108,6 +108,9 @@ New in 1.14.1: * Bugs fixed: + - The user is no longer allowed to override the --srcdir nor the --prefix + configure options used by "make distcheck" (bug#14991). + - Fixed a gross inefficiency in the recipes for installing byte-compiled python files, that was causing an O(N^2) performance on the number N of files, instead of the expected O(N) performance. Note that this bug diff --git a/doc/automake.texi b/doc/automake.texi index 62728d4..cd33ad7 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -8556,11 +8556,18 @@ to supply additional flags to @command{configure}, define them in the @file{Makefile.am}. The user can still extend or override the flags provided there by defining the @code{DISTCHECK_CONFIGURE_FLAGS} variable, on the command line when invoking @command{make}. - -Still, developers are encouraged to strive to make their code buildable -without requiring any special configure option; thus, in general, you -shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}. However, there -might be few scenarios in which the use of this variable is justified. address@hidden See automake bug#14991 for more details about how the following holds. +It's worth nothing that @command{make distcheck} needs complete control +over the @command{configure} options @option{--srcdir} and address@hidden, so those options cannot be overridden by address@hidden nor by address@hidden + +Also note that developers are encouraged to strive to make their code +buildable without requiring any special configure option; thus, in +general, you shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}. +However, there might be few scenarios in which the use of this variable +is justified. GNU @command{m4} offers an example. GNU @command{m4} configures by default with its experimental and seldom used "changeword" feature disabled; so in its case it is useful to have @command{make distcheck} diff --git a/lib/am/distdir.am b/lib/am/distdir.am index f354987..a8ad63c 100644 --- a/lib/am/distdir.am +++ b/lib/am/distdir.am @@ -452,13 +452,16 @@ distcheck: dist ## so be sure to 'cd' back to the original directory after this. && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && ../configure \ ?GETTEXT? --with-included-gettext \ -## Additional flags for configure. Keep this last in the configure -## invocation so the developer and user can override previous options, -## and let the user's flags take precedence over the developer's ones. +## Additional flags for configure. $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ +## At the moment, the code doesn't actually support changes in these --srcdir +## and --prefix values, so don't allow them to be overridden by the user or +## the developer. That used to be allowed, and caused issues in practice +## (in corner-case usages); see automake bug#14991. + --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 8bdbdc0..75f303a 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -35,7 +35,6 @@ t/gcj6.sh \ t/override-conditional-2.sh \ t/override-conditional-pr13940.sh \ t/dist-pr109765.sh \ -t/distcheck-no-prefix-or-srcdir-override.sh \ t/instdir-cond2.sh \ t/java-nobase.sh \ t/objext-pr10128.sh \ -- 1.8.3.1.605.g85318f5