Features/Python 2.7

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Current status)
(python-virtkey done)
Line 61: Line 61:
** pygoocanvas
** pygoocanvas
* [http://koji.fedoraproject.org/koji/getfile?taskID=2344329&name=root.log caribou] needs
* [http://koji.fedoraproject.org/koji/getfile?taskID=2344329&name=root.log caribou] needs
** python-virtkey [http://koji.fedoraproject.org/koji/getfile?taskID=2345507&name=build.log fails with /usr/include/gtk-2.0/gdk/gdkpixbuf.h:37:35: fatal error: gdk-pixbuf/gdk-pixbuf.h: No such file or directory included from /usr/include/gtk-2.0/gdk/gdkcairo.h]
** python-virtkey [DONE]
** pyclutter
** pyclutter
* lazygal fails with [http://koji.fedoraproject.org/koji/getfile?taskID=2344725&name=build.log  AttributeError: 'module'  object has no attribute 'sysconfig' (distutils module)]
* lazygal fails with [http://koji.fedoraproject.org/koji/getfile?taskID=2344725&name=build.log  AttributeError: 'module'  object has no attribute 'sysconfig' (distutils module)]

Revision as of 19:42, 27 July 2010


Python 2.7


Update the system Python 2 stack in Fedora from 2.6 to 2.7


  • Email: <dmalcolm@redhat.com>

Current status

  • Targeted release: Fedora 14
  • Last updated: 2010-07-27
  • Percentage of completion: 90%

Packages built into dist-f14-py27-rebuild; currently 99 failing rebuilds

Packages waiting on other packages

Packages with build errors

Common bugs

FIXED: gobject-introspection

gobject-introspection's /usr/bin/g-ir-scanner was incompatible with python 2.7, this led to anything building a .gir file failing.

This was blocking:


Various swig users fail to find the python libraries during "configure":

checking for Python library path... find: `/usr/lib/python/config/': No such file or directory
find: `/usr/lib/python/': No such file or directory
checking python extra libraries... 

Relevant part of "configure" seems to be

        python_path=`echo $PYTHON | sed "s,/bin.*$,,"`
        for i in "$python_path/lib/python$PYTHON_VERSION/config/" "$python_path/lib/python$PYTHON_VERSION/" "$python_path/lib/python/config/" "$python_path/\
lib/python/" "$python_path/" ; do

This sets $python_path to "/usr", and then looks for config within /usr/lib, which fails on 64-bit: the relevant files are in /usr/lib64 (why did this work before? is this a python change?)

Before this we see errors like this:

checking for SWIG version... 2.0.0
configure: WARNING: SWIG version >= 1.3.17 is required.  You have 2.0.0.  You should look at http://www.swig.org

The test in the configure seems to look for an exact match on major and minor, and >= on the patch level, and thus "2" -ne "1" seems to leave SWIG_LIB unset, and could be the actual problem here.

A workaround is to add this:

# For now (workaround for SWIG major-version bump)
BuildRequires:  autoconf

# Fixup expected version of SWIG:
sed -i -e "s|AC_PROG_SWIG(1.3.17)|AC_PROG_SWIG(2.0.0)|" configure.in
# and rebuild the configure script:

This was blocking:

Detailed Description

  • Python 2.7 was released on 2010-07-03

This will require a rebuild of everything with Requires: python(abi) = 2.6. See Mass_Rebuild_SOP for how we do a full rebuild of everything - hopefully we can adapt the scripts there to accomplish the rebuild needed for Python 2.7. See Features/Python_2.7/MassRebuild for notes on this specific rebuild.


Hopefully, little to no porting will be required.

Some notes on changes that may require porting are given on the upstream wiki here: http://docs.python.org/dev/whatsnew/2.7.html#porting-to-python-2-7

Benefit to Fedora

Fedora aims to showcase the latest in free and open source software - we should have the most recent release of Python.


Python is pervasive in Fedora. Everything from yum to system-config-* to anaconda to pungi is written in Python.

How To Test

Interested testers do not need special hardware. If you have a favorite Python script, module, or application, please test it with Python 2.7 and verify that it still works as you expect.

My own test plan:

  • Smoketest of the interpreter
  • Run the upstream regression test suite
  • Ensure that yum still works
  • Ensure that anaconda still works

User Experience

Users should not notice any difference, other than the availability of the 2.7 interpreter


The list is too large to include here.

repoquery --whatrequires --alldeps -s "python(abi) = 2.6" | sort -u

indicates approximately 1200 rpms

Contingency Plan

  • There is none. This is do-or-die.


What’s New in Python 2.7

Release Notes

The system Python 2 stack has been upgraded to 2.7. For a list of changes see http://docs.python.org/dev/whatsnew/2.7.html

Comments and Discussion