[libvirt] Bump tar format?

Andrea Bolognani abologna at redhat.com
Thu Jul 23 07:40:38 UTC 2015


On Wed, 2015-07-22 at 17:01 +0100, Daniel P. Berrange wrote:
> 
> > Might not be trivial, as limits are apparently different for
> > symbolic
> > links and regular files, nevermind the fact that very similar
> > versions
> > of tar (eg. Fedora 22 and Fedora rawhide) don't behave the same.
> 
> If we assume 'libvirt-X.Y.Z/' (with double-digits for each version
> field)
> as a prefix, that's upto 17 characters consumed. With a limit of 100
> chars
> for symlinks, we should simply make sure all our file names are 83
> characters
> or less
> 
> $ ./build-aux/vc-list-files | perl -e 'while (<>) { die "filename $_
> too long" if length($_) > 83 }'
> filename tests/cputestdata/x86-host-Haswell-noTSX+Haswell
> -noTSX,haswell,Haswell-noTSX-result.xml
>  too long at -e line 1, <> line 1280.

Unfortunately, that script[1] doesn't catch any of the files
that are breaking the build, and prints out a bunch of false
positives instead.

That's because vc-list-files explicitly filters out symbolic
links; even if it didn't, you would only get the name of the
actual symbolic link in the output, for example

  tests/nodeinfodata/linux-deconfigured-cpus/node/node17/cpu120

which is still way shorter than 83 characters and as such
wouldn't trigger the error condition.

The problem is that, IIUC, all symbolic links are converted
to hard links when creating the tarball and if the path to
the file requiring this conversion has length >100, like

  libvirt-1.2.18/tests/nodeinfodata/linux-deconfigured-cpus/ \
  node/node17/cpu120/topology/thread_siblings

then we get into trouble.

Cheers.


[1] with the call to die() replaced with a print() so that it
    doesn't stop at the first error 
-- 
Andrea Bolognani
Software Engineer - Virtualization Team




More information about the libvir-list mailing list