On Fri, Feb 8, 2019 at 10:42 PM Milan Zamazal <[email protected]> wrote:

> Dan Kenigsberg <[email protected]> writes:
>
> > On Thu, Feb 7, 2019 at 11:04 PM Milan Zamazal <[email protected]>
> wrote:
> >>
> >> Hi, there have been efforts by different Vdsm developers to port Vdsm to
> >
> >> Python 3.  I've joined the efforts recently and I focused on the aim to
> >> make Vdsm running (not necessarily working correctly initially) on
> >> Python 3, in order to better understand all the related problems and to
> >> test Python 3 compatibility (among other) on a running Vdsm instance.
> >>
> >> I can currently start Vdsm on Python 3, although it can't communicate
> >> with clients yet (such as Engine), see below.  FWIW, here is what I had
> >> to do to make Vdsm at least installable and startable with Python 3.
> >>
> >> I use Fedora 28 as the platform.  The primary reason is that ovirt.org
> >> provides for Fedora 28 all the non-Vdsm oVirt packages needed to run
> >> Vdsm on the host.
> >>
> >> Direct host installation doesn't work for me yet with Python 3.  It
> >> might be a nice next goal but there is an added complexity in requiring
> >> proper support in all the related oVirt packages, not just Vdsm.  It's
> >> better to have a basically working Vdsm first.  So I had installed the
> >> host with Python 2 Vdsm and then upgraded Vdsm to Python 3 version.
>
>
I remember that I once tried installing the engine with python3, and adding
an fc28 host worked fine, what failed when you tried it ?


> >> One non-Vdsm Python package required by Vdsm and not yet ported to
> >> Python 3 is sanlock-python.  There is an ongoing work on Python 3 port
> >> at https://pagure.io/fork/mcsontos/sanlock/commits/dev-mcsontos-python3
> .
> >> I didn't know about it so I used my own hack that made sanlock Python
> >> module at least importable on Python 3.  Let's discuss it on
> >> sanlock-devel.
> >>
> >> Regarding Vdsm itself, there are several areas to fix.  First, there are
> >> compatibility problems in Python code.  I started making some fixes in a
> >> patch series starting with https://gerrit.ovirt.org/97019.  Please note
> >> there are other Python 3 patches by other Vdsm developers.  I hope that
> >> once we branch out 4.3, we can start merging the patches to master
> >> quickly and better coordinate our efforts.
> >>
> >> Then there are other changes to Vdsm needed, which I don't have patches
> >> for (just my ugly private hacks):
> >
> > I believe that +Gal Zaidman has few patches for these in his drawer.
> > He has postponed his work due to 4.3 stabilitzation.
>
> Yes.  Gal, perhaps you can work on making the patches ready in the
> meantime, so that they can be merged quickly once we make 4.3 branch?
>

I currently understand that in terms of packaging we have to do some stuff
before we can add the python2/3 packages in VDSM:
1. Clean the spec %files section: I send a patch:
https://gerrit.ovirt.org/#/c/97266/ which starts the cleaning process, I
had some questions there to see if we like the direction of this patch,
would be happy to get your opinion on it :)
2. Agree on a way to package without duplicating code, I had this patch
https://gerrit.ovirt.org/#/c/96996/ which started the discussion, I think
that a good approach is to use Jinja templeting as a layer on top of the
spec.in instead of the script that I added,  maybe even have a
python-vdsm-packages.in file which we can use to generate the %packages, I
will work on a patch for that soon.


> >> - All the /usr/bin/python2 shebangs must be replaced with
> >>   /usr/bin/python3.  We should find a good way to solve and automated
> >>   that, perhaps as part of the installation process depending on Python
> >>   version selected.
> >>
> >> - configure.ac must be adjusted:
> >>
> >>   + AM_PATH_PYTHON([3.6])
> >>   + AC_PATH_PROG([PYTHON_CONFIG], [python3-config])
> >>   + AX_PYTHON_MODULE([six], [fatal], python3)
> >>
> >>   It should be easy to make a patch for that.
>

I think that we should remove most of the python2/3 stuff from the
configure.ac such as PYTHON3_SUPPORT, fedora_run and all those stuff and
decide which python version we are using in the spec file based on the OS
and pass it as a parameter to the configure.


> >> - The following changes in vdsm.spec.in are needed:
> >>
> >>   + Dependencies on Python packages must be adjusted.
> >>   + python3_sitelib must be used instead of python_sitelib for Python 3.
> >>   + Byte compiled files are placed into __pycache__ subdirectories by
> >>     Python 3 and they must be installed.
> >>
>

we will do all that per package once we will start packaging


> >>   It would be nice to have patches for that so that we can build
> >>   Python 3 rpm's easily.
> >>
> >> That's it at the moment.  Most compatibility problems in Python code are
> >> easy to fix once they are identified.  One important exception is bytes
> >> versus strings -- that's going to be delicate.
> >>
> >> The bytes versus strings problem is very present in communication
> >> code -- such as vdsm/rpc/http.py, vdsm/sslutils.py, etc.  While strings
> >> constants are typically used in the code, the communication means work
> >> with bytes.  This mismatch prevents Vdsm from communicating with the
> >> clients, so it would be very useful if someone could look at it and fix
> >> the code (one of the harder parts would probably be to decide where to
> >> keep bytes and where to already convert them to strings).
> >>
> >> HTH.  As more people are involved in porting Vdsm to Python 3, it might
> >> be useful to coordinate all the efforts here, to avoid duplicate work,
> >> to share findings and to speed up the process.
> >
> > Indeed. We may also try to revive Trello usage.
> > Would you add relevant tasks to https://trello.com/b/tHeO1BFW/py3-vdsm ?
>
> Sure, a couple of tasks added.
>
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Privacy Statement: https://www.ovirt.org/site/privacy-policy/
oVirt Code of Conduct: 
https://www.ovirt.org/community/about/community-guidelines/
List Archives: 
https://lists.ovirt.org/archives/list/[email protected]/message/B4SMEAUJ34AQWASQ4WTGPQ64LTOWNWFP/

Reply via email to