
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