New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 884766 link

Starred by 0 users

Issue metadata

Status: Started
Owner:
Last visit > 30 days ago
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Feature

Blocked on:
issue 736322

Blocking:
issue 898728



Sign in to add a comment

python: upgrade to 3.6+

Project Member Reported by vapier@chromium.org, Sep 17

Issue description

we're currently at python-3.4 in the sdk.  we want to get up to at least python-3.6 for our long term py3 plans.
 
Blocking: 898728
Cc: chadversary@chromium.org
Labels: -Pri-3 Pri-2
Yesterday (and continuing today) I attempted to upgrade to python-3.6 in the SDK, keeping python-3.4 co-installed during the upgrade process. The effort has proven to be a long exercise in yak-shaving.

I think this may require Portage skills that I lack.

vapier, have you also begun doing the upgrade? Regardless, do you have any general advice on how to a Python upgrade? (Such as, it may be better to force-remerge @world rather than remerge merely the affected ebuilds?).
i haven't started work here

simply adding a new version of python shouldn't require any reemerging of packages.  we have USE flags to control what versions of python get used and those should be pinning people to the existing 2.7 or 3.4 version.

it might be that some packages aren't correctly utilizing those eclasses or USE flags and should be updated, but that should be one off costs.

when we do switch from 3.4 to 3.6, it would involve a profile change which should automatically trigger rebuilds for all the corresponding packages.

can you upload your CL which just upgrades python ?

Comment 4 Deleted

Owner: chadversary@chromium.org
Status: Started (was: Available)
I'll upload CLs that install Python 3.6. As proof that it's functional, I'll also upload CLs that upgrade to meson-0.46.
Project Member

Comment 6 by bugdroid1@chromium.org, Jan 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/016e873144e89f81e143dbbd810ee8cd3e39c520

commit 016e873144e89f81e143dbbd810ee8cd3e39c520
Author: Chad Versace <chadversary@chromium.org>
Date: Sun Jan 13 21:52:21 2019

dev-lang/python-2.7: Install symlinks for python-exec

Install the following symlinks:

    ${libdir}/python-exec/python-2.7/
    |-- python
    |-- python2
    |-- python-config
    |-- python2-config
    |-- pydoc
    |-- pydoc2
    |-- 2to3

In particular, the 'python' and 'python2' symlinks are needed to safely
uprev app-eselect/eselect-python. If the symlinks are missing, newer
eselect refuses to select python2.7 as the system's default python, and
instead falls back to whatever Python version has the required symlinks
installed to ${libdir}/python-exec. Currently in the Chrome OS SDK,
eselect would fallback to python3.4 as the default, which breaks the
world.

BUG=chromium:884766
TEST=sudo emerge dev-lang/python:2.7;
     # confirm python versions remain unchanged
     python --version # expect 2.7
     python2 --version # expect 2.7

Change-Id: I596c9eef5e234b107d514b7a2882af17675125a9
Reviewed-on: https://chromium-review.googlesource.com/1315770
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Chad Versace <chadversary@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[rename] https://crrev.com/016e873144e89f81e143dbbd810ee8cd3e39c520/dev-lang/python/python-2.7.10-r7.ebuild
[modify] https://crrev.com/016e873144e89f81e143dbbd810ee8cd3e39c520/dev-lang/python/python-2.7.10.ebuild

Project Member

Comment 7 by bugdroid1@chromium.org, Jan 19 (4 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/9c71f3c065b96262243a7f2c25823e7fecf5a7b1

commit 9c71f3c065b96262243a7f2c25823e7fecf5a7b1
Author: Chad Versace <chadversary@chromium.org>
Date: Sat Jan 19 08:14:02 2019

dev-lang/python-3.6.5: Add 3.6 alongside 3.4

Add python-3.6 to the sdk, but do not replace python-3.4.

The primary motivation is that meson-0.45 dropped support for python-3.4
and requires at least python-3.5.

I dropped all the ChromeOS-specific cross-compile patches from
python-3.4.7-r2.ebuild; I did not forward-port them to
python-3.6.5.ebuild. Those patches did not work, even when
"cross-compiling" to an x86_64 sysroot, such as BOARD=eve. As evidence,
the following commands prove both fail, proving the patches do not work:

  $ emerge-eve =dev-lang/python-3.4.7-r2
  $ ebuild-eve python-3.4.7-r2.ebuild compile

The upgrade plan for Python is that sdk will continue to use python-3.4
as the default Python version until all dependencies of
virtual/target-sdk support USE=python_targets_python3_6. Until then, we
can selectively enable USE=python_targets_python3_6 in package.use for
the packages that do not support python-3.4.

BUG=chromium:884766
TEST=# Verify no conflicts pre-merge
     sudo emerge -p1UND @world dev-lang/python:3.6
     # Install
     sudo emerge dev-lang/python:3.6
     # Verify no surprise conflicts post-merge
     sudo emerge -p1UND @world
     # Confirm that 3.4 remains installed and that each wrapper points
     # to the same version as before.
     python --version # expect 2.7
     python2 -- version # expect 2.7
     python3 --version # expect 3.4
     python3.4 --version # expect 3.4
     python3.6 --version # expect 3.6

Change-Id: Ibaf383ffe5260ac64aed4f72e435ad927569e755
Reviewed-on: https://chromium-review.googlesource.com/1315771
Commit-Ready: Chad Versace <chadversary@chromium.org>
Tested-by: Chad Versace <chadversary@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Daniel Campello <campello@chromium.org>

[add] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/files/python-3.6.5-hash-unaligned.patch
[add] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/files/python-3.5-distutils-OO-build.patch
[add] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/python-3.6.5.ebuild
[add] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/files/python-3.6.5-ldshared.patch
[modify] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/Manifest
[add] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/files/python-3.6.5-libressl-compatibility.patch
[add] https://crrev.com/9c71f3c065b96262243a7f2c25823e7fecf5a7b1/dev-lang/python/files/3.6.5-disable-nis.patch

Sign in to add a comment