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>