Re: make package fails in chroot: tar: getvfsbyname failed: No such file or directory

From: Tim Kientzle <tim_at_kientzle.com>
Date: Sun, 19 Aug 2012 09:45:05 -0700
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
Received on Sun Aug 19 2012 - 14:45:08 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:29 UTC