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