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