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

Reply via email to