make package fails in chroot: tar: getvfsbyname failed: No such
file or directory
Tim Kientzle
tim at kientzle.com
Sun Aug 19 16:45:08 UTC 2012
On Aug 12, 2012, at 6:20 AM, Paul Schenkeveld wrote:
> Hi,
>
> I have a wrapper script that builds packages in a chroot environment
> which happily runs on release 6 thru 9 and earlier 10 but fails with:
>
> tar: getvfsbyname failed: No such file or directory
>
> on a recent -CURRENT.
>
> What I could dig up so far is that "make package-recursive" calls
> pkg_create(1) which in turn calls "tar -c -f <portname>.tbz -j -T -"
> and then starts feeding filenames that should go into the tarball.
>
> Something has changed in libarchive when
> src/contrib/libarchive/libarchive/archive_read_disk_posix.c was
> introduced (libarchive 3.0.3, svn rev 232153 I think) where
> setup_current_filesystem() calls getvfsbyname().
>
> Now it's getting too hairy for me so I hope someone with more
> insight in this kind of stuff can help me out.
>
> My chroot environment has a root directory which is a subdir of my build
> environment, so not a mountpoint by itself. /usr/src and /usr/ports are
> NFS mounted from a fileserver and I have devfs mounted on /dev.
libarchive does do an initial getvfsbyname() when you ask it
to traverse a directory tree so that it can accurately handle later
requests about mountpoints and filesystem types. This code
is admittedly a little intricate.
You've apparently found a case where getvfsbyname() is
getting handed a bad filename argument. Maybe one of the
filenames getting fed into -T doesn't exist. (In which case
tar should report an error, but it should be a clear error.)
Can you add a printf() nearby that getvfsbyname() call,
to dump the argument that's causing problems?
Tim
More information about the freebsd-current
mailing list