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