Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Aug 2012 09:45:05 -0700
From:      Tim Kientzle <tim@kientzle.com>
To:        Paul Schenkeveld <freebsd@psconsult.nl>
Cc:        Current FreeBSD <freebsd-current@freebsd.org>
Subject:   Re: make package fails in chroot: tar: getvfsbyname failed: No such file or directory
Message-ID:  <AC39BA73-E244-4A15-9E07-62CE0433B733@kientzle.com>
In-Reply-To: <20120812132047.GA33526@psconsult.nl>
References:  <20120812132047.GA33526@psconsult.nl>

next in thread | previous in thread | raw e-mail | index | archive | help

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AC39BA73-E244-4A15-9E07-62CE0433B733>