From c3ee1c91693bf09c2815644933e6abd0afaccdd6 Mon Sep 17 00:00:00 2001 From: Bogdan Drozdowski <> Date: Tue, 27 Dec 2022 22:39:58 +0100 Subject: [PATCH] Split packaging so tar error fails the build --- lib/am/distdir.am | 42 ++++++++++++++++++++++++++----- t/list-of-tests.mk | 1 + t/tar-split-cmd.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 t/tar-split-cmd.sh diff --git a/lib/am/distdir.am b/lib/am/distdir.am index aa2be5238..5ccae5397 100644 --- a/lib/am/distdir.am +++ b/lib/am/distdir.am @@ -334,31 +334,56 @@ if %?TOPDIR_P% GZIP_ENV = --best .PHONY: dist-gzip dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) > $(distdir).tar 2>$(distdir).err + test ! -s $(distdir).err || (cat $(distdir).err && \ + rm -rf $(DIST_ARCHIVES) $(distdir).tar $(distdir).err && \ + $(am__post_remove_distdir) && \ + exit 1) + eval GZIP= gzip $(GZIP_ENV) $(distdir).tar -c >$(distdir).tar.gz $(am__post_remove_distdir) ?BZIP2?DIST_ARCHIVES += $(distdir).tar.bz2 .PHONY: dist-bzip2 dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + tardir=$(distdir) && $(am__tar) > $(distdir).tar 2>$(distdir).err + test ! -s $(distdir).err || (cat $(distdir).err && \ + rm -rf $(DIST_ARCHIVES) $(distdir).tar $(distdir).err && \ + $(am__post_remove_distdir) && \ + exit 1) + BZIP2=$${BZIP2--9} bzip2 -c $(distdir).tar >$(distdir).tar.bz2 $(am__post_remove_distdir) ?LZIP?DIST_ARCHIVES += $(distdir).tar.lz .PHONY: dist-lzip dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + tardir=$(distdir) && $(am__tar) > $(distdir).tar 2>$(distdir).err + test ! -s $(distdir).err || (cat $(distdir).err && \ + rm -rf $(DIST_ARCHIVES) $(distdir).tar $(distdir).err && \ + $(am__post_remove_distdir) && \ + exit 1) + lzip -c $${LZIP_OPT--9} $(distdir).tar >$(distdir).tar.lz $(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 + tardir=$(distdir) && $(am__tar) > $(distdir).tar 2>$(distdir).err + test ! -s $(distdir).err || (cat $(distdir).err && \ + rm -rf $(DIST_ARCHIVES) $(distdir).tar $(distdir).err && \ + $(am__post_remove_distdir) && \ + exit 1) + XZ_OPT=$${XZ_OPT--e} xz -c $(distdir).tar >$(distdir).tar.xz $(am__post_remove_distdir) ?ZSTD?DIST_ARCHIVES += $(distdir).tar.zst .PHONY: dist-zstd dist-zstd: distdir - tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + tardir=$(distdir) && $(am__tar) > $(distdir).tar 2>$(distdir).err + test ! -s $(distdir).err || (cat $(distdir).err && \ + rm -rf $(DIST_ARCHIVES) $(distdir).tar $(distdir).err && \ + $(am__post_remove_distdir) && \ + exit 1) + zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} $(distdir).tar >$(distdir).tar.zst $(am__post_remove_distdir) ?COMPRESS?DIST_ARCHIVES += $(distdir).tar.Z @@ -367,7 +392,12 @@ dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + tardir=$(distdir) && $(am__tar) > $(distdir).tar 2>$(distdir).err + test ! -s $(distdir).err || (cat $(distdir).err && \ + rm -rf $(DIST_ARCHIVES) $(distdir).tar $(distdir).err && \ + $(am__post_remove_distdir) && \ + exit 1) + compress -c $(distdir).tar >$(distdir).tar.Z $(am__post_remove_distdir) ?SHAR?DIST_ARCHIVES += $(distdir).shar.gz diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index d82cf9c4d..8f8e08885 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -1210,6 +1210,7 @@ t/tar-pax.sh \ t/tar-opts-errors.sh \ t/tar-ustar-id-too-high.sh \ t/tar-override.sh \ +t/tar-split-cmd.sh \ t/target-cflags.sh \ t/targetclash.sh \ t/tests-environment-fd-redirect.sh \ diff --git a/t/tar-split-cmd.sh b/t/tar-split-cmd.sh new file mode 100644 index 000000000..f3a43c811 --- /dev/null +++ b/t/tar-split-cmd.sh @@ -0,0 +1,62 @@ +#! /bin/sh +# Copyright (C) 2004-2022 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 . + +# Check if failing 'tar' is not silenced and fails the build. + +. test-init.sh + +ver=1.0 + +cat > configure.ac < Makefile.am <&1 || true +#ls -l # debug +test ! -e $me-$ver.tar.gz || exit 1 + +$MAKE dist-bzip2 2>&1 || true +test ! -e $me-$ver.tar.bz2 || exit 2 + +$MAKE dist-lzip 2>&1 || true +test ! -e $me-$ver.tar.lz || exit 3 + +$MAKE dist-xz 2>&1 || true +test ! -e $me-$ver.tar.xz || exit 4 + +$MAKE dist-zstd 2>&1 || true +test ! -e $me-$ver.tar.zst || exit 5 + +: -- 2.35.1