[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] mostly-clean/texi: remove $relative_dir/ prefix
From: |
Stefano Lattarini |
Subject: |
Re: [PATCH] mostly-clean/texi: remove $relative_dir/ prefix |
Date: |
Sat, 30 Jun 2012 17:49:41 +0200 |
On 06/30/2012 01:53 PM, Jim Meyering wrote:
> Hi Stefano,
>
Hi Jim, thanks for the report and patch.
> I found that the following patch is required at least
> for vc-dwim, where without it, "make distcheck" would
> fail due to the presence of vc-dwim.t2d/ and all of the
> files in that directory: they would not be removed
> because the rule was running "rm -rf doc/vc-dwim.t2d"
> from within the doc/ sub-directory. Obviously, we cannot
> use the doc/ prefix in that case.
>
> With this patch, automake (master) still passes "make check".
I've applied it, tweaking the commit message like this:
texi: clean after Texinfo manuals in $(SUBDIRS) directories correctly
* automake.in (handle_texinfo_helper): Add $infobase.{t2d,t2p}
to @mostly_cleans, but *without* the '$relative_dir/' prefix.
and exposing the bug in the testsuite with the patch below.
Regards,
Stefano
>From 498492fdb4dd7db6a0d3aa631c350a57da3d2ab5 Mon Sep 17 00:00:00 2001
Message-Id: <address@hidden>
From: Stefano Lattarini <address@hidden>
Date: Sat, 30 Jun 2012 16:37:06 +0200
Subject: [PATCH] coverage: regression in texinfo "make mostlyclean" with
$(SUBDIRS)
After commit v1.12.1-91-g205c757 of 2012-06-20, "texi: require
Texinfo >= 4.9, related enhancements", the presence of a Texinfo manual
'manual.texi' in a subdir (say 'doc/') of a package using a recursive
make setup would cause "make distcheck" to fail, due to the presence of
the 'manual.t2d/' directory created by texi2dvi. That directory would
not be correctly removed because the 'mostlyclean' rule would run, from
within the 'doc/' sub-directory, "rm -rf doc/manual.t2d", instead of
the expected (and correct) "rm -rf manual.t2d".
Reported by Jim Meyering:
<http://lists.gnu.org/archive/html/automake-patches/2012-06/msg00203.html>
* t/txinfo21.sh: Enhance to expose the issue.
* t/txinfo-no-clutter.sh: Likewise, and other miscellaneous improvements.
Signed-off-by: Stefano Lattarini <address@hidden>
---
t/txinfo-no-clutter.sh | 88 ++++++++++++++++++++++++++++++++++++------------
t/txinfo21.sh | 17 ++++++++--
2 files changed, 81 insertions(+), 24 deletions(-)
diff --git a/t/txinfo-no-clutter.sh b/t/txinfo-no-clutter.sh
index 3dc1a29..558f8e1 100755
--- a/t/txinfo-no-clutter.sh
+++ b/t/txinfo-no-clutter.sh
@@ -14,19 +14,28 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# The pdf, ps and dvi targets shouldn't let clutter in the build directory.
-# Related to automake bug#11146.
+# The info, html, pdf, ps and dvi targets shouldn't let clutter in the
+# build directory. Related to automake bug#11146.
required='makeinfo tex texi2dvi dvips'
. ./defs || exit 1
-mkdir sub
-
-echo AC_OUTPUT >> configure.ac
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
cat > Makefile.am << 'END'
-all-local: ps pdf dvi html
-info_TEXINFOS = foo.texi sub/bar.texi
+all-local: ps pdf dvi html # For "make distcheck".
+info_TEXINFOS = foo.texi doc/bar.texi baz.texi
+SUBDIRS = sub
+END
+
+mkdir sub doc
+
+cat > sub/Makefile.am << 'END'
+all-local: ps pdf dvi html # For "make distcheck".
+info_TEXINFOS = baz.texi
END
cat > foo.texi << 'END'
@@ -39,7 +48,7 @@ Hello walls.
@bye
END
-cat > sub/bar.texi << 'END'
+cat > doc/bar.texi << 'END'
\input texinfo
@setfilename bar.info
@settitle bar
@@ -53,15 +62,6 @@ cat > baz.texi << 'END'
\input texinfo
@setfilename baz.info
@settitle baz
address@hidden Top
-Hello walls.
address@hidden
-END
-
-cat > baz.texi << 'END'
-\input texinfo
address@hidden baz.info
address@hidden baz
@defindex au
@defindex sa
@defindex sb
@@ -81,6 +81,8 @@ sb
@bye
END
+cp baz.texi sub
+
$ACLOCAL
$AUTOMAKE --add-missing
$AUTOCONF
@@ -91,11 +93,53 @@ $AUTOCONF
# clean up potential cruft left by earlier ones.
for fmt in info pdf ps dvi html all; do
$MAKE $fmt
- ls -l . sub # For debugging.
- ls -d foo* baz* sub/bar* > lst
- $EGREP -v '^(foo|sub/bar|baz)\.(texi|dvi|ps|pdf|html|info|t2[dp])$' \
- lst && exit 1
- $MAKE clean
+ # For debugging.
+ ls -l . doc sub
+ # Sanity check.
+ case $fmt in
+ html)
+ test -e foo.html
+ test -e doc/bar.html
+ test -e baz.html
+ test -e sub/baz.html
+ ;;
+ all)
+ for x in info pdf ps dvi; do
+ test -f foo.$x
+ test -f doc/bar.$x
+ test -f baz.$x
+ test -f sub/baz.$x
+ done
+ test -e foo.html
+ test -e doc/bar.html
+ test -e baz.html
+ test -e sub/baz.html
+ ;;
+ *)
+ test -f foo.$fmt
+ test -f doc/bar.$fmt
+ test -f baz.$fmt
+ test -f sub/baz.$fmt
+ ;;
+ esac
+ # Real test.
+ ls -d foo* baz* sub/baz* doc/bar* > lst
+ basename_rx='(foo|doc/bar|baz|sub/baz)'
+ case $fmt in
+ pdf) extension_rx="(texi|pdf|t2p)";;
+ dvi) extension_rx="(texi|dvi|t2d)";;
+ ps) extension_rx="(texi|ps|dvi|t2d)";;
+ info) extension_rx="(texi|info)";;
+ html) extension_rx="(texi|html)";;
+ all) extension_rx="(texi|html|info|pdf|ps|dvi|t2[pd])";;
+ *) fatal_ "unreachable code reached";;
+ esac
+ $EGREP -v "^$basename_rx\.$extension_rx$" lst && exit 1
+ # Cleanup for checks on the next format.
+ case $fmt in
+ info) rm -f *.info doc/*.info sub/*.info;;
+ *) $MAKE clean;;
+ esac
done
$MAKE distcheck
diff --git a/t/txinfo21.sh b/t/txinfo21.sh
index 52474ad..b6c222f 100755
--- a/t/txinfo21.sh
+++ b/t/txinfo21.sh
@@ -34,6 +34,7 @@ AC_OUTPUT
EOF
cat > Makefile.am << 'END'
+check-local: ps pdf dvi html # For "make distcheck".
SUBDIRS = rec
info_TEXINFOS = main.texi sub/main2.texi
END
@@ -75,13 +76,15 @@ install-pdf-local:
:> "$(pdfdir)/hello"
uninstall-local:
rm -f "$(pdfdir)/hello"
+
+check-local: ps pdf dvi html # For "make distcheck".
END
$ACLOCAL
$AUTOMAKE --add-missing
$AUTOCONF
-./configure
+./configure --prefix "$(pwd)"
$MAKE
@@ -115,17 +118,20 @@ test ! -e sub/main2.html
test ! -e rec/main3.html
# Make sure AM_MAKEINFOHTMLFLAGS is supported, and override AM_MAKEINFO.
+
+cp Makefile.am Makefile.sav
cat >>Makefile.am <<\EOF
AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
AM_MAKEINFOFLAGS = --unsupported-option
EOF
$AUTOMAKE
-./configure --prefix "$(pwd)"
+./config.status Makefile
$MAKE html
test -f main.html
test -f sub/main2.html
test -d rec/main3.html
+
$MAKE clean
test ! -e main.html
test ! -e sub/main2.html
@@ -174,4 +180,11 @@ test ! -e share/$me/pdf/main2.pdf
test ! -e share/$me/pdf/main3.pdf
test ! -e share/$me/pdf/hello
+# Restore the makefile without a broken AM_MAKEINFOFLAGS definition.
+mv -f Makefile.sav Makefile.am
+$AUTOMAKE
+./config.status Makefile
+
+$MAKE distcheck
+
:
--
1.7.9.5