On Thu, Nov 19, 2020 at 10:31:00PM +0100, Olaf Hering wrote:
Am Thu, 19 Nov 2020 22:15:27 +0100
schrieb Martin Kletzander <mkletzan(a)redhat.com>:
> Libvirt needs to be able to handle that missing binary at runtime anyway
It also needs to handle an existing binary. Just how is it supposed to handle it?
Um... run it?
Right now with meson it is either a full path, or just the name in
case it was missing at build time (I have not checked if the launcher actually consults
$PATH).
Right now, IMHO, all meson checks for binaries that are not needed at build time
should be removed. During runtime we can just use the name of the binary. I
don't know whether it used to be the case that it was thought that there might
be security issues with supplying different binary in a directory in $PATH, but
frankly, if you have (different-)user-writable directory in $PATH or non-root
access to modifying system-wide $PATH then you have bigger problems to deal
with. Even though I do not have anything to back this claim I think that
might've been the original reason.
Anyway, what would be the desired approach to tell libvirt the runtime
path?
Find it at runtime with virFindFileInPath() just like we already do with a few
binaries (and did for some since 2009 or so) or even without it as virCommand()
already searches $PATH since:
commit e0d014f2379ddde175c0c3126273911221c3e645
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Tue Mar 15 16:58:28 2011 +0000
Ensure binary is resolved wrt $PATH in virExec
I was thinking about something like:
option('runtime_path_exe', type: 'string', value: 'exe',
description: 'runtime path of exe')
runtime_path_exe = get_option('runtime_path_exe')
if not get_option('runtime_path_exe').enabled()
runtime_path_exe = find_program(runtime_path_exe, required: true).path()
conf.set_quoted('EXE', runtime_path_exe)
Olaf
Just for the sake of completeness here are some examples on how to do it:
commit 274f09cbc5ed8be00127380327d9525b852a2d1d
Author: Stefan Berger <stefanb(a)us.ibm.com>
Date: Wed Apr 14 06:29:55 2010 -0400
nwfilter: use virFindFileInPath for needed CLI tools
commit 2e045a4f9bf2757199c0997b9842d8dd8510459f
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Thu Jan 19 10:27:11 2017 +0000
storage: avoid use of undefined GLUSTER_CLI variable
Martin
P.S.: It is not *strictly* necessary that the commit hash starts with '2' ;)