[automake] Patch pax hang up with big UID corrected on the base of upstream(#843379)
Petr Hracek
phracek at fedoraproject.org
Thu May 2 09:51:46 UTC 2013
commit 16f576c320e749f2e285abb99aceba220b427782
Author: Petr Hracek <phracek at redhat.com>
Date: Thu May 2 11:44:08 2013 +0200
Patch pax hang up with big UID corrected on the base of upstream(#843379)
automake-1.13.1-pax-hangs.patch | 488 ++++++++++++++++++++++++++++++++++++---
automake.spec | 11 +-
tar-ustar-id-too-high.sh | 86 +++++++
3 files changed, 550 insertions(+), 35 deletions(-)
---
diff --git a/automake-1.13.1-pax-hangs.patch b/automake-1.13.1-pax-hangs.patch
index 5351003..809bb1a 100644
--- a/automake-1.13.1-pax-hangs.patch
+++ b/automake-1.13.1-pax-hangs.patch
@@ -1,37 +1,461 @@
+diff --git a/THANKS b/THANKS
+index 66498d4..a574909 100644
+--- a/THANKS
++++ b/THANKS
+@@ -224,6 +224,7 @@ Luo Yi luoyi.ly at gmail.com
+ Maciej Stachowiak mstachow at mit.edu
+ Maciej W. Rozycki macro at ds2.pg.gda.pl
+ Manu Rouat emmanuel.rouat at wanadoo.fr
++Marc Herbert marc.herbert at intel.com
+ Marcus Brinkmann Marcus.Brinkmann at ruhr-uni-bochum.de
+ Marcus G. Daniels mgd at ute.santafe.edu
+ Marius Vollmer mvo at zagadka.ping.de
+@@ -311,6 +312,7 @@ Peter Muir iyhi at yahoo.com
+ Peter O'Gorman peter at pogma.com
+ Peter Rosin peda at lysator.liu.se
+ Peter Seiderer seiderer123 at ciselant.de
++Petr Hracek phracek at redhat.com
+ Petter Reinholdtsen pere at hungry.com
+ Petteri Räty betelgeuse at gentoo.org
+ Phil Edwards phil at jaj.com
+@@ -391,6 +393,7 @@ Tim Rice tim at multitalents.net
+ Tim Van Holder tim.van.holder at pandora.be
+ Toshio Kuratomi toshio at tiki-lounge.com
+ Tom Epperly tepperly at llnl.gov
++Tom Rini tom_rini at mentor.com
+ Ulrich Drepper drepper at gnu.ai.mit.edu
+ Ulrich Eckhardt eckhardt at satorlaser.com
+ Václav Haisman V.Haisman at sh.cvut.cz
diff --git a/m4/tar.m4 b/m4/tar.m4
-index ec8c83e..681fcbf 100644
+index ec8c83e..aac6d8f 100644
--- a/m4/tar.m4
+++ b/m4/tar.m4
-@@ -81,7 +81,31 @@ do
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+@@ -19,76 +19,114 @@
+ # Substitute a variable $(am__untar) that extract such
+ # a tarball read from stdin.
+ # $(am__untar) < result.tar
++#
+ AC_DEFUN([_AM_PROG_TAR],
+ [# Always define AMTAR for backward compatibility. Yes, it's still used
+ # in the wild :-( We should find a proper way to deprecate it ...
+ AC_SUBST([AMTAR], ['$${TAR-tar}'])
+-m4_if([$1], [v7],
+- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+- [m4_case([$1], [ustar],, [pax],,
+- [m4_fatal([Unknown tar format])])
+-AC_MSG_CHECKING([how to create a $1 tar archive])
+-# Loop over all known methods to create a tar archive until one works.
++
++# We'll loop over all known methods to create a tar archive until one works.
+ _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+-# Do not fold the above two line into one, because Tru64 sh and
+-# Solaris sh will not grok spaces in the rhs of '-'.
+-for _am_tool in $_am_tools
+-do
+- case $_am_tool in
+- gnutar)
+- for _am_tar in tar gnutar gtar;
+- do
+- AM_RUN_LOG([$_am_tar --version]) && break
+- done
+- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+- am__untar="$_am_tar -xf -"
+- ;;
+- plaintar)
+- # Must skip GNU tar: if it does not support --format= it doesn't create
+- # ustar tarball either.
+- (tar --version) >/dev/null 2>&1 && continue
+- am__tar='tar chf - "$$tardir"'
+- am__tar_='tar chf - "$tardir"'
+- am__untar='tar xf -'
+- ;;
+- pax)
+- am__tar='pax -L -x $1 -w "$$tardir"'
+- am__tar_='pax -L -x $1 -w "$tardir"'
+- am__untar='pax -r'
+- ;;
+- cpio)
+- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+- am__untar='cpio -i -H $1 -d'
+- ;;
+- none)
+- am__tar=false
+- am__tar_=false
+- am__untar=false
+- ;;
+- esac
+
+- # If the value was cached, stop now. We just wanted to have am__tar
+- # and am__untar set.
+- test -n "${am_cv_prog_tar_$1}" && break
++m4_if([$1], [v7],
++ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+- # tar/untar a dummy directory, and stop if the command works
+- rm -rf conftest.dir
+- mkdir conftest.dir
+- echo GrepMe > conftest.dir/file
+- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
++ [m4_case([$1],
++ [ustar],
++ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
++ # There is notably a 21 bits limit for the UID and the GID. In fact,
++ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
++ # and bug#13588).
++ am_max_uid=2097151 # 2^21 - 1
++ am_max_gid=$am_max_uid
++ # The $UID and $GID variables are not portable, so we need to resort
++ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
++ # below are definitely unexpected, so allow the users to see them
++ # (that is, avoid stderr redirection).
++ am_uid=`id -u || echo unknown`
++ am_gid=`id -g || echo unknown`
++ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
++ if test $am_uid -le $am_max_uid; then
++ AC_MSG_RESULT([yes])
++ else
++ AC_MSG_RESULT([no])
++ _am_tools=none
++ fi
++ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
++ if test $am_gid -le $am_max_gid; then
++ AC_MSG_RESULT([yes])
++ else
++ AC_MSG_RESULT([no])
++ _am_tools=none
++ fi],
++
++ [pax],
++ [],
++
++ [m4_fatal([Unknown tar format])])
++
++ AC_MSG_CHECKING([how to create a $1 tar archive])
++
++ # Go ahead even if we have the value already cached. We do so because we
++ # need to set the values for the 'am__tar' and 'am__untar' variables.
++ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
++
++ for _am_tool in $_am_tools; do
++ case $_am_tool in
++ gnutar)
++ for _am_tar in tar gnutar gtar; do
++ AM_RUN_LOG([$_am_tar --version]) && break
++ done
++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
++ am__untar="$_am_tar -xf -"
++ ;;
++ plaintar)
++ # Must skip GNU tar: if it does not support --format= it doesn't create
++ # ustar tarball either.
++ (tar --version) >/dev/null 2>&1 && continue
++ am__tar='tar chf - "$$tardir"'
++ am__tar_='tar chf - "$tardir"'
++ am__untar='tar xf -'
++ ;;
++ pax)
++ am__tar='pax -L -x $1 -w "$$tardir"'
++ am__tar_='pax -L -x $1 -w "$tardir"'
++ am__untar='pax -r'
++ ;;
++ cpio)
++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
++ am__untar='cpio -i -H $1 -d'
++ ;;
++ none)
++ am__tar=false
++ am__tar_=false
++ am__untar=false
++ ;;
++ esac
++
++ # If the value was cached, stop now. We just wanted to have am__tar
++ # and am__untar set.
++ test -n "${am_cv_prog_tar_$1}" && break
++
++ # tar/untar a dummy directory, and stop if the command works.
++ rm -rf conftest.dir
++ mkdir conftest.dir
++ echo GrepMe > conftest.dir/file
++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
++ rm -rf conftest.dir
++ if test -s conftest.tar; then
++ AM_RUN_LOG([$am__untar <conftest.tar])
++ AM_RUN_LOG([cat conftest.dir/file])
++ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
++ fi
++ done
rm -rf conftest.dir
- if test -s conftest.tar; then
+- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
-+ m4_if([$1], [ustar], [
-+ if test "$_am_tool" = pax; then
-+ # Automake bugs #8343 and #13588: 'pax' can hang when UIDs
-+ # or GIDs are involved that requires more than 21 bits to
-+ # be stored.
-+ am_max_uid=2097151 # 2^21 - 1
-+ am_max_gid=$am_max_uid
-+ # The $UID and $GID variables are not portable, so we need to
-+ # resort to the POSIX-mandated id(1) utility. Errors here are
-+ # definitely unexpected, so allow the users to see them (i.e.,
-+ # no stderr redirection).
-+ am_uid=`id -u || echo unknown`
-+ am_gid=`id -g || echo unknown`
-+ if test $am_uid -le $am_max_uid; then :; else
-+ AS_ECHO(["$as_me: $LINENO: UID '$am_uid' too large for ustar"]) \
-+ >&AS_MESSAGE_LOG_FD
-+ continue
-+ fi
-+ if test $am_gid -le $am_max_gid; then :; else
-+ AS_ECHO(["$as_me: $LINENO: UID '$am_gid' too large for ustar"]) \
-+ >&AS_MESSAGE_LOG_FD
-+ continue
-+ fi
-+ fi
-+ ]) # $1 == ustar
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
- done
+- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+- fi
+-done
+-rm -rf conftest.dir
+
+-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
++ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
++ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
++
+ AC_SUBST([am__tar])
+ AC_SUBST([am__untar])
+ ]) # _AM_PROG_TAR
+diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
+index f1e3dca..664a902 100644
+--- a/t/list-of-tests.mk
++++ b/t/list-of-tests.mk
+@@ -1151,6 +1151,7 @@ t/tags-pr12372.sh \
+ t/tar.sh \
+ t/tar2.sh \
+ t/tar3.sh \
++t/tar-ustar-id-too-high.sh \
+ t/tar-override.sh \
+ t/target-cflags.sh \
+ t/targetclash.sh \
+diff --git a/t/tar-override.sh b/t/tar-override.sh
+index 863b9ab..bbf3fbb 100755
+--- a/t/tar-override.sh
++++ b/t/tar-override.sh
+@@ -16,8 +16,8 @@
+
+ # Check that the user can override the tar program used by "make dist"
+ # at runtime, by redefining the 'TAR' environment variable.
+-# FIXME: currently this works only when the tar format used is 'v7'
+-# FIXME: (which is the default one).
++# NOTE: currently this works only when the tar format used is 'v7'
++# (which is the default one).
+
+ . test-init.sh
+
+@@ -35,6 +35,7 @@ chmod a+x am--tar
+
+ cat > Makefile.am <<'END'
+ check-local: dist
++ ls -l ;: For debugging.
+ test -f am--tar-has-run
+ CLEANFILES = am--tar-has-run
+ END
+@@ -44,22 +45,24 @@ $AUTOCONF
+ $AUTOMAKE
+ ./configure
+
++clean_temp () { rm -f *.tar.* *has-run*; }
++
+ $MAKE dist
+-test -f $me-1.0.tar.gz
++test -f $distdir.tar.gz
+ ls | grep has-run && exit 1
+
+-rm -f *.tar.* *has-run*
++clean_temp
+
+ TAR="$cwd/am--tar foo" $MAKE distcheck
+-test -f $me-1.0.tar.gz
++test -f $distdir.tar.gz
+ test "$(cat am--tar-has-run)" = foo
+
+-rm -f *.tar.* *has-run*
++clean_temp
+
+ TAR=; unset TAR
+ # Creative use of eval to pacify maintainer checks.
+ eval \$'MAKE dist "TAR=./am--tar mu"'
+-test -f $me-1.0.tar.gz
++test -f $distdir.tar.gz
+ test "$(cat am--tar-has-run)" = mu
+
+ :
+diff --git a/t/tar-ustar-id-too-high.sh b/t/tar-ustar-id-too-high.sh
+new file mode 100755
+index 0000000..79ae89d
+--- /dev/null
++++ b/t/tar-ustar-id-too-high.sh
+@@ -0,0 +1,88 @@
++#! /bin/sh
++# Copyright (C) 2013 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 that UID or GID too high for the ustar format are correctly
++# rwcognized and diagnosed by configure. See bug#8343 and bug#13588.
++
++. test-init.sh
++
++cat > configure.ac <<END
++AC_INIT([$me], [1.0])
++AM_INIT_AUTOMAKE([tar-ustar])
++AC_CONFIG_FILES([Makefile])
++AC_OUTPUT
++END
++
++: > Makefile.am
++
++run_configure()
++{
++ st=0; ./configure ${1+"$@"} >stdout || st=$?
++ cat stdout || exit 1
++ test $st -eq 0 || exit 1
++}
++
++checked ()
++{
++ grep "^checking $1\.\.\. $2$" stdout
++}
++
++$ACLOCAL
++$AUTOCONF
++$AUTOMAKE
++
++mkdir bin
++cat > bin/id <<'END'
++#!/bin/sh -e
++case "$*" in
++ -u) echo "${am_uid-1000}";;
++ -g) echo "${am_gid-1000}";;
++ *) echo "id: bad/unexpected usage" >&2; exit 1;;
++esac
++END
++chmod a+x bin/id
++
++PATH=$(pwd)/bin$PATH_SEPARATOR$PATH
++
++# Problematic ID reported in
++# <https://bugzilla.redhat.com/show_bug.cgi?id=843376>.
++am_uid=16777216; export am_uid
++am_gid=1000; export am_gid
++run_configure
++checked "whether UID '$am_uid' is supported by ustar format" "no"
++checked "whether GID '1000' is supported by ustar format" "yes"
++checked "how to create a ustar tar archive" "none"
++
++# Another problematic ID reported in
++# <https://bugzilla.redhat.com/show_bug.cgi?id=843376>.
++am_uid=1000; export am_uid
++am_gid=17000000; export am_gid
++run_configure
++checked "whether UID '1000' is supported by ustar format" "yes"
++checked "whether GID '$am_gid' is supported by ustar format" "no"
++checked "how to create a ustar tar archive" "none"
++
++# The minimal ID that is too big.
++two_to_twentyone=$((32 * 32 * 32 * 32 * 2))
++# <https://bugzilla.redhat.com/show_bug.cgi?id=843376>.
++am_uid=$two_to_twentyone; export am_uid
++am_gid=$two_to_twentyone; export am_gid
++run_configure
++checked "whether UID '$two_to_twentyone' is supported by ustar format" "no"
++checked "whether GID '$two_to_twentyone' is supported by ustar format" "no"
++checked "how to create a ustar tar archive" "none"
++
++:
+diff --git a/t/tar.sh b/t/tar.sh
+index 58e52ea..c146ad9 100755
+--- a/t/tar.sh
++++ b/t/tar.sh
+@@ -18,8 +18,8 @@
+
+ . test-init.sh
+
+-cat > configure.ac << 'END'
+-AC_INIT([tar], [1.0])
++cat > configure.ac <<END
++AC_INIT([$me], [1.0])
+ AM_INIT_AUTOMAKE([tar-ustar])
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
+@@ -32,9 +32,12 @@ $AUTOCONF
+ $AUTOMAKE
+ ./configure
+
+-if grep 'am__tar.*false' Makefile; then
++grep 'am__tar' Makefile # For debugging.
++if grep '^am__tar = false' Makefile; then
+ skip_ "cannot find proper archiver program"
+ fi
+
+ $MAKE distcheck
+-test -f tar-1.0.tar.gz
++test -f "$distdir.tar.gz"
++
++:
+diff --git a/t/tar2.sh b/t/tar2.sh
+index 5a9d4d7..758d89a 100755
+--- a/t/tar2.sh
++++ b/t/tar2.sh
+@@ -18,8 +18,8 @@
+
+ . test-init.sh
+
+-cat > configure.ac << 'END'
+-AC_INIT([tar2], [1.0])
++cat > configure.ac <<END
++AC_INIT([$me], [1.0])
+ AM_INIT_AUTOMAKE([tar-pax])
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
+@@ -32,9 +32,12 @@ $AUTOCONF
+ $AUTOMAKE
+ ./configure
+
+-if grep 'am__tar.*false' Makefile; then
++grep 'am__tar' Makefile # For debugging.
++if grep '^am__tar = false' Makefile; then
+ skip_ "cannot find proper archiver program"
+ fi
+
+ $MAKE distcheck
+-test -f tar2-1.0.tar.gz
++test -f "$distdir.tar.gz"
++
++:
+diff --git a/t/tar3.sh b/t/tar3.sh
+index 040d7b4..befc23f 100755
+--- a/t/tar3.sh
++++ b/t/tar3.sh
+@@ -18,8 +18,8 @@
+
+ . test-init.sh
+
+-cat > configure.ac << 'END'
+-AC_INIT([tar2], [1.0])
++cat > configure.ac <<END
++AC_INIT([$me], [1.0])
+ AM_INIT_AUTOMAKE([tar-pax tar-v7])
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
+@@ -37,8 +37,8 @@ grep "'tar-v7'" tar-err
+
+ rm -rf autom4te.cache
+
+-cat > configure.ac << 'END'
+-AC_INIT([tar2], [1.0])
++cat > configure.ac <<END
++AC_INIT([$me], [1.0])
+ AM_INIT_AUTOMAKE
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
+@@ -47,6 +47,6 @@ END
+ echo 'AUTOMAKE_OPTIONS = tar-pax' > Makefile.am
+
+ AUTOMAKE_fails
+-grep '^Makefile\.am:1:.*tar-pax.*AM_INIT_AUTOMAKE' stderr
++grep "^Makefile\.am:1:.*'tar-pax'.*AM_INIT_AUTOMAKE" stderr
+
+ :
diff --git a/automake.spec b/automake.spec
index bd2cfde..93ded97 100644
--- a/automake.spec
+++ b/automake.spec
@@ -3,13 +3,14 @@
Summary: A GNU tool for automatically creating Makefiles
Name: automake
Version: %{api_version}.1
-Release: 17%{?dist}
+Release: 18%{?dist}
# docs ~> GFDL, sources ~> GPLv2+, mkinstalldirs ~> PD and install-sh ~> MIT
License: GPLv2+ and GFDL and Public Domain and MIT
Group: Development/Tools
Source: ftp://ftp.gnu.org/gnu/automake/automake-%{version}.tar.xz
+Source2: tar-ustar-id-too-high.sh
Patch0: %{name}-%{version}-reenable-disabled-macros.patch
Patch1: %{name}-%{version}-disable-tests.patch
@@ -19,7 +20,7 @@ Patch1: %{name}-%{version}-disable-tests.patch
# ~> #901333
# ~> already upstream (commits 7a3d7cee2 and c83c13355)
Patch2: %{name}-%{version}-non-existing-m4-dir.patch
-#Patch3: %{name}-%{version}-pax-hangs.patch
+Patch3: %{name}-%{version}-pax-hangs.patch
URL: http://www.gnu.org/software/automake/
Requires: autoconf >= 2.65
@@ -70,7 +71,8 @@ Makefiles.
%patch0 -p1 -b .reenable_macros
%patch1 -p1 -b .disable_tests
%patch2 -p1 -b .non_existing_m4_dir
-#%patch3 -p1 -b .pax-hangs
+%patch3 -p1 -b .pax-hangs
+cp %{SOURCE2} t/
autoreconf -iv
# Fedora only to add ppc64p7 (Power7 optimized) arch:
@@ -111,6 +113,9 @@ fi
%{_mandir}/man1/*
%changelog
+* Thu May 03 2013 Petr Hracek <phracek at redhat.com> - 1.13.1-18
+- Patch pax hang up with big UID corrected on the base of upstream(#843379)
+
* Wed Apr 24 2013 Petr Hracek <phracek at redhat.com> - 1.13.1-17
- Patch pax hang up with big UID was removed(#843379)
diff --git a/tar-ustar-id-too-high.sh b/tar-ustar-id-too-high.sh
new file mode 100644
index 0000000..371440f
--- /dev/null
+++ b/tar-ustar-id-too-high.sh
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2013 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 that UID or GID too high for the ustar format are correctly
+# rwcognized and diagnosed by configure. See bug#8343 and bug#13588.
+
+. test-init.sh
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([tar-ustar])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+run_configure()
+{
+ st=0; ./configure ${1+"$@"} >stdout || st=$?
+ cat stdout || exit 1
+ test $st -eq 0 || exit 1
+}
+
+checked ()
+{
+ grep "^checking $1\.\.\. $2$" stdout
+}
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir bin
+cat > bin/id <<'END'
+#!/bin/sh -e
+case "$*" in
+ -u) echo "${am_uid-1000}";;
+ -g) echo "${am_gid-1000}";;
+ *) echo "id: bad/unexpected usage" >&2; exit 1;;
+esac
+END
+chmod a+x bin/id
+
+PATH=$(pwd)/bin$PATH_SEPARATOR$PATH
+
+# Problematic ID reported in
+# <https://bugzilla.redhat.com/show_bug.cgi?id=843376>.
+am_uid=16777216; export am_uid
+am_gid=1000; export am_gid
+run_configure
+checked "whether UID '$am_uid' is supported by ustar format" "no"
+checked "whether GID '1000' is supported by ustar format" "yes"
+checked "how to create a ustar tar archive" "none"
+
+# Another problematic ID reported in
+# <https://bugzilla.redhat.com/show_bug.cgi?id=843376>.
+am_uid=1000; export am_uid
+am_gid=17000000; export am_gid
+run_configure
+checked "whether UID '1000' is supported by ustar format" "yes"
+checked "whether GID '$am_gid' is supported by ustar format" "no"
+checked "how to create a ustar tar archive" "none"
+
+# The minimal ID that is too big.
+two_to_twentyone=$((32 * 32 * 32 * 32 * 2))
+# <https://bugzilla.redhat.com/show_bug.cgi?id=843376>.
+am_uid=$two_to_twentyone; export am_uid
+am_gid=$two_to_twentyone; export am_gid
+run_configure
+checked "whether UID '$two_to_twentyone' is supported by ustar format" "no"
+checked "whether GID '$two_to_twentyone' is supported by ustar format" "no"
+checked "how to create a ustar tar archive" "none"
More information about the scm-commits
mailing list