[Libguestfs] [PATCH] v2v: -o rhv-upload: decouple name of nbdkit python plugin

Pino Toscano ptoscano at redhat.com
Mon Jan 7 15:41:17 UTC 2019


On Monday, 7 January 2019 14:30:00 CET Richard W.M. Jones wrote:
> On Thu, Dec 13, 2018 at 06:58:30PM +0100, Pino Toscano wrote:
> > Do not assume that the Python plugin of nbdkit has the same name of the
> > Python interpreter.
> > 
> > Use the default upstream name of nbdkit to identify it; downstream
> > distributions must adjust this variable, in case they rename the Python
> > plugin of nbdkit.
> 
> I'm not saying this is wrong, but it does break "out of the box" -o
> rhv-upload.  It means that to get it to work on Fedora we _have_ to
> patch:
> 
> > --- a/v2v/output_rhv_upload.ml
> > +++ b/v2v/output_rhv_upload.ml
> > @@ -78,6 +78,7 @@ let parse_output_options options =
> >  
> >    { rhv_cafile; rhv_cluster; rhv_direct; rhv_verifypeer }
> >  
> > +let nbdkit_python_plugin = "python"
> 
> to change this "python3" [1].

Yes, this is correct.  This follows the fact that on Fedora the
Python 3 plugin is renamed, so the "OOTB experience" is already
"different" because of that.

Also, the previous name ("python3") for the nbdkit plugin was broken
everywhere but on Fedora, which basically breaks the "OOTB" experience
for any other distro...

> [1] By the way, the failure is weird, non-obvious and non-actionable,
> so here it is:
> 
> nbdkit python '/home/rjones/d/libguestfs-master/tmp/v2v.xSFDLk/rhv-upload-plugin.py' --dump-plugin >/dev/null
>   File "/home/rjones/d/libguestfs-master/tmp/v2v.xSFDLk/rhv-upload-plugin.py", line 3
> SyntaxError: Non-ASCII character '\xe2' in file /home/rjones/d/libguestfs-master/tmp/v2v.xSFDLk/rhv-upload-plugin.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
> nbdkit: error: /home/rjones/d/libguestfs-master/tmp/v2v.xSFDLk/rhv-upload-plugin.py: error running this script
> virt-v2v: error: nbdkit python plugin is not installed or not working.  It 
> is required if you want to use ‘-o rhv-upload’.

At least it fails ;)

One option I see is to export, as part of the nbdkit Python module
interface, the equivalent of sys.version_info: this way, the scripts
can detect which python version is the plugin linked with:

  if nbdkit.python_version_info[0] != 3:
    error("this script is for Python 3")

OTOH, it will not help with the above case, as there is a syntax error
even before a check can be reached...

-- 
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190107/da198474/attachment.sig>


More information about the Libguestfs mailing list