On Tue, Apr 29, 2025 at 02:57:13PM +0200, Ján Tomko wrote:
> On a Tuesday in 2025, Daniel P. Berrangé via Devel wrote:
> > Over the years we've made various changes to stop hardcoding paths at
> > build time, but the work is incomplete.
> >
> > This bit us significantly in Fedora 42 where they have merged the 'sbin'
> > and 'bin' dirs together. In the build environment we have a clean
> > install where '/sbin' and '/usr/sbin' are simply symlinks to '/usr/bin'.
> >
> > Our meson.build logic preferentially looks in '/sbin' and '/usr/sbin'
> > to find programs, and thus it finds *all* binaries in '/sbin' and then
> > hardcodes this path. This happens even for binaries that have always
> > been in '/usr/bin' and NEVER '/sbin' or '/usr/sbin'
> >
> > On fresh Fedora installs this is fine as the symlinks match the build
> > environment.
> >
> > On upgraded Fedora installs, however, '/sbin' and '/usr/sbin' remain
> > separate directories and inside they symlink individual binaries,
> > if-and-only-if the binary was in '/sbin' in Fedora 41.
> >
> > Thus many of the binaries we found in /sbin don't actually exist and
> > libvirt thus breaks.
> >
> > There is really no reason why we should be harcoding any paths at
> > build time. virCommand happily uses virFindFileInPath for any paths
> > which are not already absolute. $PATH includes '/sbin' and '/usr/sbin'
> > when we're running privileged, and when unprivileged we shouldn't need
> > to run binaries from there.
> >
>
> Does anyone happen to remember the original reason?
>
> The only thing I can think of is saving the lookup time, but that has to
> be negligible compared to the cost of fork and the command actually
> doing something
I've not checked, but I expect that a very very very long time ago virCommand
would not lookup binaries in $PATH, and then we just cargo-culted the
configure.ac checks, later meson.build checks, without thinking about it
more.
Yes, we've got the cost of a few stat() calls, but as you say, it isn't
worth worrying about that in the context of a heavy fork+exec.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|