[arch-dev-public] Python-3.x transition with python-2.7 update

Allan McRae allan at archlinux.org
Mon Jul 5 19:45:56 EDT 2010

On 05/07/10 23:11, Allan McRae wrote:
> Hi all,
> Here comes a rebuild so large that our TODO list had trouble handling
> it! Hopefully all packages are now in the rebuild list.... At a total of
> 518 packages long, it puts the combined libpng/libjpeg rebuild to shame.
> Python-2.7 has been releases and will be the last 2.x official release
> of python. So it is time to switch to python-3.x as our /usr/bin/python
> and python-2.7 as our /usr/bin/python2. See
> http://wiki.archlinux.org/index.php/DeveloperWiki:Python_Todo_List for
> all the details about how to achieve this.
> It is actually not that hard. I had a system converted when python-3.1
> was released as a test run. The main key is to build packages in a clean
> chroot so that they detect and point their files to /usr/bin/python2.
> Some packages are stupid and require a sed at the end of packaging to
> fix that.
> Because this rebuild is crazy stupid, I would like to plan when it is
> going to occur. We will need to clear out [testing] as much as possible
> over the coming week or two (what is happening with perl...). Also, a
> new KDE is a the beginning of next month so I would not want to conflict
> with that. Any other major rebuilds on the way? Should we do this in a
> separate repo?

Just to clarify why this _is_ happening.

python-2.7 will enable USC4 (UTF8) and will not enable the usual stupid 
hack of including the previous pythons include path (the past has shown 
that this breaks too much).  So ~500 out of the 518 packages are going 
to need to be rebuilt anyway...  I think this is a major point people 
are missing.

So the choice is:

1) massive rebuild now _and_ even more massive rebuild later when 
python3 is more widely used with lots of package renames (python3-foo 
would need renamed python-foo and python-foo would become python2-foo). 
  We actually can not handle that dual rename with 

2) one massive rebuild allowing the packages to gradually transition 
their packages to python3. As in the wiki, there will be no forced 
package renaming (let the maintainers introduce a python2-foo package 
only if they want to supply a python2 and python3 version) but the 
description should be updated to say python2.

#1 is completely crazy and can not be done cleanly on a rolling release 
distro.  #2 is slightly crazy and works fine (one of my installs 
underwent this conversion).

This has been in planning for over a year.  I have trialled various ways 
of achieving this transition over the last year and have concluded that 
doing it with the python-2.7 release is optimal because:
  - we are doing most of the rebuilds anyway
  - it is early enough that our repo is not filled with python3-foo packages
  - most major python projects have basic python3 support in their 
developmental code or are working on it (see the number of GSoC projects 
doing this transition....) so we will see python3 packages soon.

I am not delaying the inevitable, especially when the delay will hurt us 
more in the long run.


More information about the arch-dev-public mailing list