#157 Python 3.2a1 in rawhide
Closed: Fixed None Opened 13 years ago by rcritten.

From the Fedora devel list. This will have some impact on our spec file.

I just built Python 3.2a1 into rawhide:
http://koji.fedoraproject.org/koji/buildinfo?buildID=191382
so the meaning of "python3" in rawhide just jumped from Python 3.1 to
Python 3.2

A new opcode (SETUP_WITH [1]) was added, to speed up the "with"
statement, and this changes the bytecode format for python 3. python3's
provides changes from:
python(abi) = 3.1
libpython3.1.so.1.0()
to
python(abi) = 3.2
libpython3.2.so.1.0()

So once that package hits the buildroot for rawhide, everything that
builds a python3 package or subpackage will need to be rebuilt, to use
the new bytecode format.

Thankfully this will be a much smaller-scale rebuild than the recent 2.7
rebuilds.

To liven things up a bit, the layout of how Python stores cached
bytecode has changed somewhat.

The full details can be seen at:
http://www.python.org/dev/peps/pep-3147/

but to summarize, where before you had:
foo/init.py
foo/bar.py
foo/baz.py
with cached bytecode:
foo/init.pyc
foo/init.pyo
foo/bar.pyc
foo/baz.pyo
foo/bar.pyc
foo/baz.pyo
with Python 3.2 onwards you now have a pycache directory:
foo/init.py
foo/bar.py
foo/baz.py
foo/pycache/
foo/pycache/init.cpython-32.pyc
foo/pycache/init.cpython-32.pyo
foo/pycache/foo.cpython-32.pyc
foo/pycache/foo.cpython-32.pyo
foo/pycache/bar.cpython-32.pyc
foo/pycache/bar.cpython-32.pyo

and the files are explicitly for "CPython 3.2" (the "32" above refers to
the python version, not the architecture; this threw me initially).

The idea is to permit sharing of modules between multiple
parallel-installable versions of Python.

So you'll need to update the %files for python3 subpackages, listing
something like:
foo/pycache
to capture the directory and the bytecode files within.

Hope this makes sense
Dave

[1] http://svn.python.org/view?view=rev&revision=73597


master:

  • b7d70ba Build: makerpms.sh generates Python 2 & 3 packages at the same time
  • 21a0987 Build: specify BuildRequires for Python 3 pylint
  • 9c87c39 Build: always use Pylint from Python version used for rest of the build

Metadata Update from @rcritten:
- Issue assigned to pspacek
- Issue set to the milestone: FreeIPA 4.5

7 years ago

Login to comment on this ticket.

Metadata