Subject: [PATCHES] {master} dist: distdir not unconditionally removed anymore for xz and lzip

From: Stefano Lattarini <[email-masked]>
Date: Sun, 08 Jan 2012 10:19:08 +0100

References:
 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10444>
 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10448>

And here is a two-patch series fixing the bug.  The first patch enhances
the testsuite coverage for the various `dist-*' options and formats and
for the "make dist" usages (and in doing so exposes the bug), the second
patch fixes the problem (which, it turns out, was simply due to missing
edits after a merge).

Tested on Debian unstable (GNU make 3.81 and 3.80), Solaris 10 (with
GNU make 3.82, CCS make and Sun Distributed Make) and NetBSD 5.1 (with
system make and GNU make 3.82).

I will push the patches to master in a day or two if there is no objection.

Regards,
  Stefano
>From 1d92795ebee0afa97c39a49a7ad6adee638c4846 Mon Sep 17 00:00:00 2001
Message-Id: <1d92795eb[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Sat, 7 Jan 2012 11:25:12 +0100
Subject: [PATCH 1/2] coverage: archive and compression formats used by "make
 dist"

This change exposes automake bug#10444 a.k.a. bug#10448.

* tests/dist-formats.tap: New test.
* tests/lzip.test: Remove, it's obsolete now.
* tests/nogzip.test: Likewise.
* tests/nogzip2.test: Likewise.
* tests/xz.test: Likewise.
* tests/list-of-tests.mk: Update.
---
 tests/dist-formats.tap |  430 ++++++++++++++++++++++++++++++++++++++++++++++++
 tests/list-of-tests.mk |    5 +-
 tests/lzip.test        |   39 -----
 tests/nogzip.test      |   39 -----
 tests/nogzip2.test     |   35 ----
 tests/xz.test          |   39 -----
 6 files changed, 431 insertions(+), 156 deletions(-)
 create mode 100755 tests/dist-formats.tap
 delete mode 100755 tests/lzip.test
 delete mode 100755 tests/nogzip.test
 delete mode 100755 tests/nogzip2.test
 delete mode 100755 tests/xz.test

diff --git a/tests/dist-formats.tap b/tests/dist-formats.tap
new file mode 100755
index 0000000..34399bc
--- /dev/null
+++ b/tests/dist-formats.tap
@@ -0,0 +1,430 @@
+#! /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/>.
+
+# Check support for different compression formats used by distribution
+# archives.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ 70
+
+# ---------------------------------------------------- #
+#  Common and/or auxiliary subroutines and variables.  #
+# ---------------------------------------------------- #
+
+ocwd=`pwd` || fatal_ "obtaining current working directory"
+
+TAR='' && unset TAR
+
+# Create common aclocal.m4 file, for later tests.
+mkdir setup \
+  && cd setup \
+  && echo 'AC_INIT([x], [0]) AM_INIT_AUTOMAKE' > configure.ac \
+  && $ACLOCAL \
+  && mv aclocal.m4 .. \
+  && cd .. \
+  && rm -rf setup \
+  || fatal_ "creating common aclocal.m4 file"
+
+# Some make implementations (e.g., HP-UX) don't grok `-j', some require
+# no space between `-j' and the number of jobs (e.g., older GNU make
+# versions), and some *do* require a space between `-j' and the number
+# of jobs (e.g., Solaris dmake).  We need a runtime test to see what
+# works.
+for MAKE_j4 in "$MAKE -j4" "$MAKE -j 4" false; do
+  echo all: | $MAKE_j4 -f - && break
+  : For shells with buggy 'set -e'.
+done
+
+# Set variables `$compressor' and `$suffix'.
+setup_vars_for_compression_format ()
+{
+  suffix=NONE compressor=NONE
+  case $1 in
+    gzip) suffix=tar.gz  compressor=gzip     ;;
+    tarZ) suffix=tar.Z   compressor=compress ;;
+    lzip) suffix=tar.lz  compressor=lzip     ;;
+      xz) suffix=tar.xz  compressor=xz       ;;
+   bzip2) suffix=tar.bz2 compressor=bzip2    ;;
+     zip) suffix=zip     compressor=zip      ;;
+    shar) suffix=shar.gz compressor=shar     ;;
+       *) fatal_ "invalid compression format '$1'";;
+  esac
+}
+
+all_compression_formats='gzip tarZ lzip xz bzip2 zip shar'
+
+all_compressors=`
+  for x in $all_compression_formats; do
+    setup_vars_for_compression_format $x
+    echo $compressor
+  done | tr "$nl" ' '`
+echo All compressors: $all_compressors
+
+# Assume gzip(1) and compress(1) are available on every reasonable
+# portability target.
+missing_compressors=`
+  for c in $all_compressors; do
+    test $c = compress || test $c = gzip || $c --version </dev/null >&2 \
+      && continue
+    echo $c
+  done | tr "$nl" ' '`
+echo Missing compressors: $missing_compressors
+
+have_compressor ()
+{
+  case " $missing_compressors " in *\ $1\ *) false;; *) : ;; esac
+}
+
+have_all_compressors ()
+{
+  test -z "$missing_compressors"
+}
+
+start_subtest ()
+{
+  name=$1; shift
+  test -n "$name" || fatal_ "start_subtest: no subtest name given"
+  if test $# -gt 0; then
+    eval "$@" || fatal_ "start_subtest: evaluating assignments"
+  fi
+  ac_opts=`echo $ac_opts | tr ',' ' '`
+  am_opts=`echo $am_opts | tr ',' ' '`
+  mkdir "$name"
+  cd "$name"
+  unindent > configure.in <<END
+    AC_INIT([$name], [1.0])
+    AM_INIT_AUTOMAKE([$ac_opts])
+    AC_CONFIG_FILES([Makefile])
+    AC_OUTPUT
+END
+  echo "AUTOMAKE_OPTIONS = $am_opts" > Makefile.am
+  # It is imperative that aclocal.m4 is copied after configure.in has
+  # been created, to avoid a spurious trigger of the automatic remake
+  # rules for configure & co.
+  cp "$ocwd"/aclocal.m4 \
+     "$am_scriptdir"/missing \
+     "$am_scriptdir"/install-sh \
+     .
+}
+
+end_subtest ()
+{
+  unset name; unset ac_opts; unset am_opts;
+  cd "$ocwd" || fatal_ "couldn't chdir back to '$ocwd'"
+}
+
+command_ok_if_have_compressor ()
+{
+  if have_compressor "$compressor"; then
+    command_ok_ "$@"
+  else
+    skip_ -r "'$compressor' not available" "$1"
+  fi
+}
+
+can_compress ()
+{
+  test $# -eq 2 || fatal_ "can_compress: bad number of arguments"
+  tarname=$1 format=$2
+  setup_vars_for_compression_format "$format"
+
+  command_ok_ "'dist-$format' target always created" $MAKE -n dist-$format
+
+  command_ok_if_have_compressor "'make dist-$format' work by default" \
+    eval '
+      rm -f *$tarname* \
+        && make dist-$format \
+        && test -f $tarname-1.0.$suffix \
+        && ls -l *$tarname* \
+        && test "`ls *$tarname*`" = $tarname-1.0.$suffix'
+
+  unset suffix compressor format tarname
+}
+
+# ---------------------------------------- #
+#  Defaults layout of the dist-* targets.  #
+# ---------------------------------------- #
+
+start_subtest defaults
+
+command_ok_ "default [automake]"        $AUTOMAKE
+command_ok_ "default [autoconf]"        $AUTOCONF
+command_ok_ "default [configure]"       ./configure
+command_ok_ "default [make distcheck]"  $MAKE distcheck
+
+command_ok_ "'make dist' only builds *.tar.gz by default" \
+            test "`ls *defaults*`" = defaults-1.0.tar.gz
+
+rm -f *defaults*
+
+for fmt in $all_compression_formats; do
+  can_compress defaults $fmt
+done
+unset fmt
+
+end_subtest
+
+# ----------------------------------------------------------- #
+#  Check diagnostic for no-dist-gzip without another dist-*.  #
+# ----------------------------------------------------------- #
+
+nogzip_stderr ()
+{
+  grep "$1:.*no-dist-gzip" stderr \
+    && grep "$1:.* at least one archive format must be enabled" stderr
+}
+
+nogzip_automake_failure ()
+{
+  AUTOMAKE_fails -d "no-dist-gzip ($1) without other formats is an error"
+  command_ok_ "no-dist-gzip ($1) without other formats gives diagnostic" \
+              nogzip_stderr "$2"
+}
+
+start_subtest am-nogz-only am_opts=no-dist-gzip ac_opts=
+nogzip_automake_failure 'am' 'Makefile\.am:1'
+end_subtest
+
+start_subtest ac-nogz-only am_opts= ac_opts=no-dist-gzip
+nogzip_automake_failure 'ac' 'configure\.in:2'
+end_subtest
+
+# ------------------------------------------------- #
+#  Check use of no-dist-gzip with a dist-* option.  #
+# ------------------------------------------------- #
+
+append_to_opt ()
+{
+  var=$1_opts val=$2
+  eval "$var=\${$var:+\"\$$var,\"}\$val" || fatal_ "evaluating \${$var}"
+  unset var val
+}
+
+nogzip ()
+{
+  test $#,$1,$3,$5 = 6,in,and,in \
+    && case $2,$6 in ac,ac|ac,am|am,ac|am,am) :;; *) false;; esac \
+    || fatal_ "nogzip: invalid usage"
+  format=$4 where_dist_nogzip=$2 where_dist_format=$6
+  shift 6
+
+  am_opts= ac_opts=
+  append_to_opt $where_dist_format dist-$format
+  append_to_opt $where_dist_nogzip no-dist-gzip
+  setup_vars_for_compression_format "$format"
+  # Do these before the am_opts and ac_opts variable can be munged
+  # by `start_subtest'.
+  desc=
+  test -n "$am_opts" && desc=${desc:+"$desc "}"am=$am_opts"
+  test -n "$ac_opts" && desc=${desc:+"$desc "}"ac=$ac_opts"
+
+  start_subtest nogzip-$format am_opts=$am_opts ac_opts=$ac_opts
+
+  unindent >> Makefile.am <<END
+    check-ark-name:
+	test \$(DIST_ARCHIVES) = \$(distdir).$suffix
+    check-ark-exists:
+	test -f \$(distdir).$suffix
+    check-no-tar-gz:
+	test ! -f \$(distdir).tar.gz
+END
+
+  command_ok_ "$desc [automake]" $AUTOMAKE
+  command_ok_ "$desc [autoconf]" $AUTOCONF
+  command_ok_ "$desc [configure]" ./configure
+  command_ok_ "$desc [ark-name]" $MAKE check-ark-name
+  command_ok_if_have_compressor "$desc [distcheck]" $MAKE distcheck
+  command_ok_if_have_compressor "$desc [distcheck]" $MAKE check-ark-exists
+  command_ok_ "$desc [no .tar.gz]"  $MAKE check-no-tar-gz
+
+  unset desc
+
+  end_subtest
+}
+
+#      $1 $2  $3   $4     $5  $6
+nogzip in am  and  bzip2  in  am
+nogzip in ac  and  xz     in  am
+nogzip in am  and  lzip   in  ac
+nogzip in ac  and  tarZ   in  ac
+
+
+# ----------------------------------------------------------- #
+#  The 'dist-gzip' target is created also with no-dist-gzip.  #
+# ----------------------------------------------------------- #
+
+start_subtest dist-gzip-persistence am_opts=no-dist-gzip,dist-xz
+command_ok_ "dist-gzip persistence [automake]"  $AUTOMAKE
+command_ok_ "dist-gzip persistence [autoconf]"  $AUTOCONF
+command_ok_ "dist-gzip persistence [configure]" ./configure
+can_compress dist-gzip-persistence gzip
+end_subtest
+
+
+# ----------------------- #
+#  Parallel compression.  #
+# ----------------------- #
+
+# We only use formats requiring 'gzip', 'bzip2' and 'compress' programs,
+# since there are the most likely to be all found on the great majority
+# of systems.
+
+start_subtest parallel-compression ac_opts=dist-bzip2 am_opts=dist-tarZ
+
+desc=gzip+bzip2+tarZ
+tarname=parallel-compression-1.0
+
+check_tarball ()
+{
+  format=$1
+  setup_vars_for_compression_format $format
+  (
+    tarball=$tarname.$suffix \
+      && test -f $tarball \
+      && mkdir check-$format \
+      && cp $tarball check-$format \
+      && cd check-$format \
+      && $compressor -d $tarball \
+      && tar xvf $tarname.tar \
+      && diff ../Makefile.in $tarname/Makefile.in \
+      && cd .. \
+      && rm -rf check-$format
+   )
+}
+
+command_ok_ "$desc [automake]" $AUTOMAKE
+
+skip_reason=
+have_compressor bzip2 || skip_reason="'bzip2' not available"
+if test "$MAKE_j4" = false; then
+  test -z "$skip_reason" || skip_reason="$skip_reason and "
+  skip_reason="${skip_reason}make concurrency unavailable"
+fi
+
+if test -n "$skip_reason"; then
+  skip_row_ 6 -r "$skip_reason" "$desc"
+else
+  command_ok_ "$desc [autoconf]" $AUTOCONF
+  command_ok_ "$desc [configure]" ./configure
+  command_ok_ "$desc [make -j4 dist-all]"  $MAKE_j4 dist
+  ls -l # For debugging.
+  command_ok_ "$desc [check .tar.gz tarball]"  check_tarball gzip
+  command_ok_ "$desc [check .tar.bz2 tarball]" check_tarball bzip2
+  command_ok_ "$desc [check .tar.Z tarball]"   check_tarball tarZ
+fi
+
+unset tarname desc skip_reason
+
+end_subtest
+
+
+# --------------------------------------------------------- #
+#  The various 'dist-*' targets can happily work together.  #
+# --------------------------------------------------------- #
+
+start_subtest all-together
+
+desc='all compressors together'
+tarname=all-together-1.0
+
+echo 'AM_INIT_AUTOMAKE([' > am-init.m4
+echo 'AUTOMAKE_OPTIONS =' > Makefile.am
+
+# Add half `dist-*' options to AM_INIT_AUTOMAKE, half to AUTOMAKE_OPTIONS.
+flip=:
+for fmt in $all_compression_formats; do
+  test $fmt = gzip && continue
+  if $flip; then
+    echo "  dist-$fmt" >> am-init.m4
+    flip=false
+  else
+    echo "AUTOMAKE_OPTIONS += dist-$fmt" >> Makefil.am
+    flip=:
+  fi
+done
+unset flip fmt
+
+echo '])' >> am-init.m4
+
+sed 's/AM_INIT_AUTOMAKE.*/m4_include([am-init.m4])/' configure.in > t
+mv -f t configure.in
+
+# For debugging.
+cat Makefil.am
+cat configure.in
+cat am-init.m4
+
+command_ok_ "$desc [aclocal]" $ACLOCAL --force
+command_ok_ "$desc [automake]" $AUTOMAKE
+command_ok_ "$desc [autoconf]" $AUTOCONF
+command_ok_ "$desc [configure]" ./configure
+
+if have_all_compressors; then
+  command_ok_ "$desc [make distcheck, real]" $MAKE distcheck
+else
+  skip_ -r "not all compressors available" "$desc [make distcheck, real]"
+fi
+
+# We fake existence of all the compressors here, so that we don't have
+# to require any of them to run the further tests.  This is especially
+# important since it's very unlikely that a non-developer has all the
+# compression tools installed on his machine at the same time.
+
+mkdir bin
+cd bin
+cat > check-distdir <<END
+#!/bin/sh
+{ ls -l '$tarname' && diff Makefile.am '$tarname'/Makefile.am; } >&2 \
+  || { echo "== distdir fail =="; exit 1; }
+END
+cat > grep-distdir-error <<'END'
+#!/bin/sh
+grep 'distdir fail' && exit 1
+:
+END
+chmod a+x check-distdir grep-distdir-error
+for prog in tar $all_compressors; do
+  case $prog in
+    tar|shar|zip) cp check-distdir $prog;;
+               *) cp grep-distdir-error $prog;;
+  esac
+done
+unset prog
+ls -l # For debugging.
+cd ..
+
+oPATH=$PATH
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+
+command_ok_ \
+  "$desc ['make dist-all', stubbed]" \
+  $MAKE dist-all
+
+subdesc="$desc ['make dist -j4', stubbed]"
+if test "$MAKE_j4" = false; then
+  skip_ -r "make concurrency unavailable" "$subdesc"
+else
+  command_ok_ "$subdesc" $MAKE_j4 dist
+fi
+unset subdesc
+
+PATH=$oPATH; export PATH
+
+end_subtest
+
+:
diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index 1aac45e..8355b7f 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -328,6 +328,7 @@ dirlist.test \
 dirlist2.test \
 dirlist-abspath.test \
 discover.test \
+dist-formats.tap \
 dist-auxdir-many-subdirs.test \
 dist-auxfile-2.test \
 dist-auxfile.test \
@@ -583,7 +584,6 @@ ltinstloc.test \
 ltlibobjs.test \
 ltlibsrc.test \
 ltorder.test \
-lzip.test \
 lzma.test \
 m4-inclusion.test \
 maintclean.test \
@@ -639,8 +639,6 @@ nodepcomp.test \
 nodist.test \
 nodist2.test \
 nodist3.test \
-nogzip.test \
-nogzip2.test \
 noinst.test \
 noinstdir.test \
 nolink.test \
@@ -1168,7 +1166,6 @@ werror3.test \
 werror4.test \
 whoami.test \
 xsource.test \
-xz.test \
 yacc-basic.test \
 yacc-d-basic.test \
 yacc-clean.test \
diff --git a/tests/lzip.test b/tests/lzip.test
deleted file mode 100755
index d413a83..0000000
--- a/tests/lzip.test
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2010, 2011 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/>.
-
-# Check support for no-dist-gzip with lzip.
-
-required=lzip
-. ./defs || Exit 1
-
-cat > configure.in << 'END'
-AC_INIT([lzip], [1.0])
-AM_INIT_AUTOMAKE([no-dist-gzip dist-lzip])
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
-END
-
-cat > Makefile.am << 'END'
-test: distcheck
-	test $(DIST_ARCHIVES) = lzip-1.0.tar.lz
-	test -f $(DIST_ARCHIVES)
-END
-
-$ACLOCAL
-$AUTOCONF
-$AUTOMAKE
-./configure
-$MAKE test
diff --git a/tests/nogzip.test b/tests/nogzip.test
deleted file mode 100755
index bf49a53..0000000
--- a/tests/nogzip.test
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2003, 2011 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/>.
-
-# Check support for no-dist-gzip
-
-required=bzip2
-. ./defs || Exit 1
-
-cat > configure.in << 'END'
-AC_INIT([nogzip], [1.0])
-AM_INIT_AUTOMAKE([no-dist-gzip dist-bzip2])
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
-END
-
-cat > Makefile.am << 'END'
-test: distcheck
-	test $(DIST_ARCHIVES) = nogzip-1.0.tar.bz2
-	test -f $(DIST_ARCHIVES)
-END
-
-$ACLOCAL
-$AUTOCONF
-$AUTOMAKE
-./configure
-$MAKE test
diff --git a/tests/nogzip2.test b/tests/nogzip2.test
deleted file mode 100755
index 1f8ed8f..0000000
--- a/tests/nogzip2.test
+++ /dev/null
@@ -1,35 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2003, 2011 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/>.
-
-# Check diagnostic for no-dist-gzip without dist-*.
-
-. ./defs || Exit 1
-
-cat > configure.in << 'END'
-AC_INIT([nogzip], [1.0])
-AM_INIT_AUTOMAKE([no-dist-gzip])
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
-END
-
-: > Makefile.am
-
-$ACLOCAL
-AUTOMAKE_fails
-grep 'configure.in:2:.*no-dist-gzip' stderr
-
-echo 'AUTOMAKE_OPTIONS = dist-bzip2' > Makefile.am
-$AUTOMAKE
diff --git a/tests/xz.test b/tests/xz.test
deleted file mode 100755
index 1320ed7..0000000
--- a/tests/xz.test
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2008, 2011 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/>.
-
-# Check support for no-dist-gzip with xz.
-
-required=xz
-. ./defs || Exit 1
-
-cat > configure.in << 'END'
-AC_INIT([xz], [1.0])
-AM_INIT_AUTOMAKE([no-dist-gzip dist-xz])
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
-END
-
-cat > Makefile.am << 'END'
-test: distcheck
-	test $(DIST_ARCHIVES) = xz-1.0.tar.xz
-	test -f $(DIST_ARCHIVES)
-END
-
-$ACLOCAL
-$AUTOCONF
-$AUTOMAKE
-./configure
-$MAKE test
-- 
1.7.7.3

>From ecce6d4d386c925d5b58487edc2cdf985b20fda9 Mon Sep 17 00:00:00 2001
Message-Id: <ecce6d4d3[email-masked]>
In-Reply-To: <1d92795eb[email-masked]>
References: <1d92795eb[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Fri, 6 Jan 2012 23:37:09 +0100
Subject: [PATCH 2/2] dist: distdir not unconditionally removed anymore for xz
 and lzip

This change fixes automake bug#10444.

The 'dist-xz' and 'dist-lzip' recipes were erroneously using
'$(am__remove_distdir)' instead of '$(am__post_remove_distdir)'
to cleanup the '$(distdir)'; so a "make dist" issued in a package
using (say) gzip and xz compression would have failed to properly
created the gzip tarball, since the distdir was unconditionally
removed by "make dist-xz" upon its completion, instead of being
left populated for the following "make dist-gzip".

The problem with 'dist-xz' was introduced in the merge commit
`v1.11-1183-g72c8dcb', and the problem with 'dist-lzip' was
introduced in the merge commit `xxx'

* lib/am/distdir.am (dist-xz): Use '$(am__post_remove_distdir)',
not '$(am__remove_distdir)'.
(dist-lzip): Likewise.
---
 lib/am/distdir.am |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index d8c1a89..72268cb 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -353,13 +353,13 @@ dist-bzip2: distdir
 .PHONY: dist-lzip
 dist-lzip: distdir
 	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 ?XZ?DIST_ARCHIVES += $(distdir).tar.xz
 .PHONY: dist-xz
 dist-xz: distdir
 	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 ?COMPRESS?DIST_ARCHIVES += $(distdir).tar.Z
 .PHONY: dist-tarZ
-- 
1.7.7.3