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