On 07/06/2012 01:05 PM, Stefano Lattarini wrote: > > Grrr, the second patch doesn't work on systems (like NetBSD 5.1) where > "mkdir -p" is not deemed good enough, and "install-sh -d" is used > instead: > [SNIP] > Anyway, I've verified that this is *not* a regression (at least w.r.t > Automake 1.11.2), so I'll simply adjust the tests accordingly (using > $(mkdir_p) in a $(SUBDIR) Makefile, instead of fooling around with > chdir in make recipes). > > I'll post the adjusted patch soon.
Here it is what should be squashed into the first patch. The updated patch is also attached, for reference. I will push soon if there is no objection. Regards, Stefano -*-*-*- diff --git a/t/mkdir_p.sh b/t/mkdir_p.sh index 9f03cf5..ff0cb8f 100755 --- a/t/mkdir_p.sh +++ b/t/mkdir_p.sh @@ -19,26 +19,34 @@ . ./defs || exit 1 -echo AC_OUTPUT >> configure.ac +cat >> configure.ac << 'END' +AC_CONFIG_FILES([sub/Makefile]) +AC_OUTPUT +END cat > Makefile.am << 'END' -.PHONY: test -check-local: test -test: +SUBDIRS = sub +all-local: $(mkdir_p) . dir1/dir2 -## $(mkdir_p) should continue to work even if we chdir around. - (mkdir x && cd x && $(mkdir_p) .. y/z ../foo) - test -d foo +check-local: all test -d dir1/dir2 - test -d x/y/z + test -d dir1/dir3 +END + +mkdir sub +cat > sub/Makefile.am << 'END' +# '$(mkdir_p)' should continue to work even in subdir makefiles. +all-local: + $(mkdir_p) .. ../dir1/dir3 END $ACLOCAL -$AUTOCONF -Werror -Wobsolete +$AUTOCONF -Werror -Wall $AUTOMAKE ./configure -$MAKE test +$MAKE check-local $MAKE distcheck : diff --git a/t/mkdirp-deprecation.sh b/t/mkdirp-deprecation.sh index 9f41250..0257391 100755 --- a/t/mkdirp-deprecation.sh +++ b/t/mkdirp-deprecation.sh @@ -22,19 +22,24 @@ cat >> configure.ac << 'END' AM_PROG_MKDIR_P +AC_CONFIG_FILES([sub/Makefile]) AC_OUTPUT END cat > Makefile.am << 'END' -.PHONY: test -check-local: test -test: +SUBDIRS = sub +all-local: $(mkdir_p) . dir1/dir2 -## $(mkdir_p) should continue to work even if we chdir around. - (mkdir x && cd x && $(mkdir_p) .. y/z ../foo) - test -d foo +check-local: all test -d dir1/dir2 - test -d x/y/z + test -d dir1/dir3 +END + +mkdir sub +cat > sub/Makefile.am << 'END' +# '$(mkdir_p)' should continue to work even in subdir makefiles. +all-local: + $(mkdir_p) .. ../dir1/dir3 END grep_err () @@ -61,7 +66,7 @@ grep_err $AUTOMAKE -Wno-obsolete ./configure -$MAKE test +$MAKE check-local $MAKE distcheck :
>From 6ffd5883bedc10cfe999381367ef8578278eb218 Mon Sep 17 00:00:00 2001 Message-Id: <6ffd5883bedc10cfe999381367ef8578278eb218.1341574842.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Fri, 6 Jul 2012 09:59:23 +0200 Subject: [PATCH] coverage: test that AM_PROG_MKDIR_P and $(mkdir_p) still works MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit They are deprecated, but should continue to work in the 1.12.x release series. Report from Benoit Sigoure and Diego Elio Pattenò: <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> * t/mkdirp-deprecation.sh: Enhance. * t/mkdir_p.sh: New test, check that AM_INIT_AUTOMAKE still defines the $(mkdir_p) make variable. Currently xfailing. * t/list-of-tests.mk (handwritten_TESTS, XFAIL_TESTS): Add the new test. Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- t/list-of-tests.mk | 2 ++ t/mkdir_p.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++ t/mkdirp-deprecation.sh | 36 +++++++++++++++++++++++++++------ 3 files changed, 83 insertions(+), 6 deletions(-) create mode 100755 t/mkdir_p.sh diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 852b87a..61ac5c1 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -38,6 +38,7 @@ t/override-conditional-2.sh \ t/dist-pr109765.sh \ t/instdir-cond2.sh \ t/java-nobase.sh \ +t/mkdir_p.sh \ t/objext-pr10128.sh \ t/parallel-tests-many.sh \ t/pr8365-remake-timing.sh \ @@ -688,6 +689,7 @@ t/missing5.sh \ t/missing6.sh \ t/am-missing-prog.sh \ t/missing-auxfile-stops-makefiles-creation.sh \ +t/mkdir_p.sh \ t/mkdirp-deprecation.sh \ t/mkinstall.sh \ t/mkinst2.sh \ diff --git a/t/mkdir_p.sh b/t/mkdir_p.sh new file mode 100755 index 0000000..624365c --- /dev/null +++ b/t/mkdir_p.sh @@ -0,0 +1,51 @@ +#! /bin/sh +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# AM_INIT_AUTOMAKE should still define $(mkdir_p), for backward +# compatibility. + +. ./defs || exit 1 + +cat >> configure.ac << 'END' +AC_CONFIG_FILES([sub/Makefile]) +AC_OUTPUT +END + +cat > Makefile.am << 'END' +SUBDIRS = sub +all-local: + $(mkdir_p) . dir1/dir2 +check-local: all + test -d dir1/dir2 + test -d dir1/dir3 +END + +mkdir sub +cat > sub/Makefile.am << 'END' +# '$(mkdir_p)' should continue to work even in subdir makefiles. +all-local: + $(mkdir_p) .. ../dir1/dir3 +END + +$ACLOCAL +$AUTOCONF -Werror -Wall +$AUTOMAKE + +./configure +$MAKE check-local +$MAKE distcheck + +: diff --git a/t/mkdirp-deprecation.sh b/t/mkdirp-deprecation.sh index 8482dea..0257391 100755 --- a/t/mkdirp-deprecation.sh +++ b/t/mkdirp-deprecation.sh @@ -14,13 +14,33 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# Check that the AM_PROG_MKDIR_P macro is deprecated. It will be -# be removed in the next major Automake release. +# Check that the AM_PROG_MKDIR_P macro is deprecated; it will be +# be removed in the next major Automake release. But also check +# that it still works as expected in the current release series. . ./defs || exit 1 -echo AM_PROG_MKDIR_P >> configure.ac -: > Makefile.am +cat >> configure.ac << 'END' +AM_PROG_MKDIR_P +AC_CONFIG_FILES([sub/Makefile]) +AC_OUTPUT +END + +cat > Makefile.am << 'END' +SUBDIRS = sub +all-local: + $(mkdir_p) . dir1/dir2 +check-local: all + test -d dir1/dir2 + test -d dir1/dir3 +END + +mkdir sub +cat > sub/Makefile.am << 'END' +# '$(mkdir_p)' should continue to work even in subdir makefiles. +all-local: + $(mkdir_p) .. ../dir1/dir3 +END grep_err () { @@ -38,11 +58,15 @@ grep_err $AUTOCONF -Werror -Wno-obsolete -#AUTOMAKE_fails -#grep_err +AUTOMAKE_fails +grep_err AUTOMAKE_fails --verbose -Wnone -Wobsolete grep_err $AUTOMAKE -Wno-obsolete +./configure +$MAKE check-local +$MAKE distcheck + : -- 1.7.9.5