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 :|

Reply via email to