Odi's astoundingly incomplete notes

New entries | Code

Gentoo switches to Python 3.8

With this change Gentoo replaces the current Python 3.7 with 3.8. Unfortunately this makes your next emerge session a bit more interesting.

emerge -uvD world may complain that it wants python 3.7 USE flags
# required by @world (argument)
>=dev-python/setuptools-50.3.0 python_targets_python3_7
and that there are conflicts
  (dev-python/pygobject-3.36.1-r1:3/3::gentoo, installed) USE="cairo -examples -test" ABI_X86="(64)" PYTHON_TARGETS="python3_7 -python3_6 -python3_8 -python3_9"
  pulled in by ...

  (dev-python/pygobject-3.36.1-r1:3/3::gentoo, ebuild scheduled for merge) USE="cairo -examples -test" ABI_X86="(64)" PYTHON_TARGETS="python3_8 -python3_6 -python3_7 -python3_9"
  pulled in by...
In that case first rebuild packages with new USE flags:
emerge -N1avD world

Or try changed USE flags only, which may give better results:
emerge -U1avD world

This will switch existing packages to use 3.8 instead of 3.7. After that tell the system that it should prefer 3.8:
eselect python set --python3 python3.8
Update: eselect-python is now gone. Directly edit /etc/python-exec/python-exec.conf

If the world update still complains about conflicts then there are installed packages that have no python 3.8 support. Uninstalling them and depclean may be an option, or ignoring the dependency.

To find remaining packages that still have a python3_7 useflag that prevents depcleaning 3.7:
find /var/db/pkg -name USE | xargs grep python3_7

posted on 2020-12-04 10:05 CET in Code | 0 comments | permalink