NoMorePython2: Difference between revisions

From Yocto Project
Jump to navigationJump to search
No edit summary
Line 30: Line 30:
=== Broken ===
=== Broken ===
* python3-pycairo (appears to just need a Waf update)
* python3-pycairo (appears to just need a Waf update)
** Waf uses Python 2 by default
** Add waf-native to oe-core
** Add waf-native to oe-core
** Extend waf class to invoke waf-native using Python 3
** Extend waf class to invoke waf-native using Python 3
Line 35: Line 36:
* webkitgtk
* webkitgtk
* ovmf
* ovmf
* eglinfo (-x11 -egl)
* eglinfo-x11 eglinfo-fb (same as python3-pycairo, uses Waf)


=== Needs Python 2, actively refuses to use Python 3 ===
=== Needs Python 2, actively refuses to use Python 3 ===

Revision as of 11:53, 3 August 2017

No More Python 2!

Problem Statement

Python 2 is in maintenance mode and everyone should shift to Python 3. We've made the move in OpenEmbedded Core so that core-image-sato doesn't pull in Python 2, but Python 2 is still needed during the build.

Goal

To be able to build first core-image-sato and then world of OpenEmbedded Core without Python 2 being present on the host, or being built via python-native.

Method

One option is to just remove Python 2 from your build host. Whilst this works, unless you're building inside a container this might not be feasible. The next best thing is to make the binary not executable briefly for the test builds. Sadly you can't remove Python 2 from HOSTTOOLS as several upstreams will explicitly poke around /usr/bin looking for a Python to run.

Status

Patches Ready

  • ca-certificates
  • libsoup
  • grub
  • pseudo
  • ninja

To Review

  • xcb-proto (do all callers use py3)
  • texinfo-dummy-native (does it still work)

Broken

  • python3-pycairo (appears to just need a Waf update)
    • Waf uses Python 2 by default
    • Add waf-native to oe-core
    • Extend waf class to invoke waf-native using Python 3
    • Use waf class in python3-pycairo
  • webkitgtk
  • ovmf
  • eglinfo-x11 eglinfo-fb (same as python3-pycairo, uses Waf)

Needs Python 2, actively refuses to use Python 3

  • apr
  • qemu