Martin Kletzander
2021-Jun-08 07:53 UTC
[Libguestfs] [libnbd PATCH 03/20] nbdsh: Check for python-exec2c installations
Platforms that utilise python-exec [0] wrapper scripts (mainly Gentoo) utilise basenames of python scripts and executables to decide which python implementation to use for running that particular command. That makes the nbdsh "hack" in sh/nbdsh.in not work, even if 'exec -a' is supported by sh. Signed-off-by: Martin Kletzander <mkletzan at redhat.com> --- sh/nbdsh.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sh/nbdsh.in b/sh/nbdsh.in index d10f0c1b6b26..333c2d5f8b96 100644 --- a/sh/nbdsh.in +++ b/sh/nbdsh.in @@ -19,7 +19,8 @@ # Test if /bin/sh supports exec -a option (only supported in bash 4.2 # and above, and not part of POSIX). -if /bin/sh -c 'exec -a test true' 2>/dev/null; then +if /bin/sh -c 'exec -a test true' 2>/dev/null && \ + test $(readlink $(which @PYTHON@)) != python-exec2c; then exec -a nbdsh @PYTHON@ -mnbd "$@" else exec @PYTHON@ -mnbd "$@" -- 2.31.1
Richard W.M. Jones
2021-Jun-08 09:50 UTC
[Libguestfs] [libnbd PATCH 03/20] nbdsh: Check for python-exec2c installations
On Tue, Jun 08, 2021 at 09:53:44AM +0200, Martin Kletzander wrote:> Platforms that utilise python-exec [0] wrapper scripts (mainly Gentoo) utiliseDid you mean "[0]" to reference a URL?> basenames of python scripts and executables to decide which python > implementation to use for running that particular command. That > makes the nbdsh "hack" in sh/nbdsh.in not work, even if 'exec -a' is > supported by sh.It's annoying that we have to work around Gentoo here by adding a dependency on coreutils. I suppose FreeBSD does have readlink(1). But my feeling is that the Gentoo script is broken if it cannot cope with an unexpected basename. Would a configure-time test be better here? It seems like it would have less chance of breaking on the end-user machine (I know that on Gentoo, "end-user" is a distinction without a difference but it would make nbdsh more robust on non-Gentoo). Also it would mean the package didn't need to depend on coreutils. Rich.> Signed-off-by: Martin Kletzander <mkletzan at redhat.com> > --- > sh/nbdsh.in | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/sh/nbdsh.in b/sh/nbdsh.in > index d10f0c1b6b26..333c2d5f8b96 100644 > --- a/sh/nbdsh.in > +++ b/sh/nbdsh.in > @@ -19,7 +19,8 @@ > > # Test if /bin/sh supports exec -a option (only supported in bash 4.2 > # and above, and not part of POSIX). > -if /bin/sh -c 'exec -a test true' 2>/dev/null; then > +if /bin/sh -c 'exec -a test true' 2>/dev/null && \ > + test $(readlink $(which @PYTHON@)) != python-exec2c; then > exec -a nbdsh @PYTHON@ -mnbd "$@" > else > exec @PYTHON@ -mnbd "$@" > -- > 2.31.1 > > _______________________________________________ > Libguestfs mailing list > Libguestfs at redhat.com > https://listman.redhat.com/mailman/listinfo/libguestfs-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org