On Wed Jan 20 03:31:03 2010, JJORE wrote:
Show quoted text> On Mon Jan 18 18:01:54 2010, MSCHWERN wrote:
> > Found some info on it.
> >
http://old.nabble.com/bug-in-BSD-tar--td10844273.html
> >
> > * It would seem to only effect filenames with non 7-bit ASCII filenames,
> > so the scope of this bug is rather restricted.
> >
> > * gnutar 1.17 can handle it, it just throws a warning
>
> No, standard GNU tar 1.19 and lower do not handle it. Andreas had to
> upgrade PAUSE servers recently from GNU tar 1.16 to 1.20 to be able to
> unpack uploaded tarballs. It throws the SCHILY and LIBARCHIVE warnngs
> and then exits non-zero.
>
> Perhaps your test used the Mac provided gnutar? I used the following
> snippet to find that apparently just my Snow Leopard. When I create a
> tarball, it's using libarchive 2.6.2 which when I check the source
> definitely adds the "bad" headers. When I build the GNU tars, nothing
> earlier than 1.20 can handle the BSD tarballs.
>
> $ find . \( -name '*.tar.gz' -o -name '*.tgz' \) -type f -print0 | xargs
> -0 zegrep '(SCHILY|LIBARCHIVE)' > bsdtar.txt 2>&1
>
> ./authors/id/J/JJ/JJORE/B-Utils-0.10.tar.gz:Binary file (standard input)
> matches
> ./authors/id/J/JJ/JJORE/Term-HiliteDiff-0.09.tar.gz:Binary file
> (standard input) matches
> ./authors/id/J/JJ/JJORE/B-Lint-StrictOO-0.03.tar.gz:Binary file
> (standard input) matches
Aha! The ustar format seems to have some fixed width fields
(
http://en.wikipedia.org/wiki/Tar_%28file_format%29#Format_details).
When a darwin user or group id is greater than 0777777 octal,
/usr/bin/tar starts creating the extra headers. I reproduced both
success and failure modes locally by creating a user with uid = 2**18 -
1 and uid = 2**18.
I'd noticed separately while still chatting to #toolchain that using the
-o flag as recommended in
https://rt.cpan.org/Ticket/Display.html?id=53403 produced the following
warnings.
W3M211a:~ jbenjore$ tar -o -czf B-Utils-0.10.tar.gz B-Utils-0.10
tar: B-Utils-0.10/: Numeric user ID too large: Result too largeNumeric
group ID too large: Result too large
tar: B-Utils-0.10/build/: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/BUtils.h: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/BUtils_op.h: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/Changes: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/lib/: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/Makefile.PL: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/MANIFEST: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/META.yml: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/OP.xs: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/ppport.h: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/README: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/: Numeric user ID too large: Result too largeNumeric
group ID too large: Result too large
tar: B-Utils-0.10/typemap: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/Utils.xs: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/xt/: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/xt/pod.t: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/xt/signature.t: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/10use.t: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/11export.t: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/20all_starts.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/21all_roots.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/22anon_subs.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/30parent.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/31oldname.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/32kids.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/33ancestors.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/34descendants.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/35siblings.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/36previous.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/37stringify.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/40walk.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/41walkfilt.t: Numeric user ID too large:
Result too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/42all.t: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/43allfilt.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/44optrep.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/50carp.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/t/utils/51croak.t: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/lib/B/: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/lib/B/Utils/: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/lib/B/Utils.pm: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/lib/B/Utils/OP.pm: Numeric user ID too large: Result
too largeNumeric group ID too large: Result too large
tar: B-Utils-0.10/build/IFiles.pm: Numeric user ID too large: Result too
largeNumeric group ID too large: Result too large
Further, there were no files in the created tarball. It seems that any
file which provokes this kind of warning is just omitted from the tarball.
W3M211a:~ jbenjore$ tar tzf B-Utils-0.10.tar.gz
W3M211a:~ jbenjore$
i