Python 2.7
Summary
Update the system Python 2 stack in Fedora from 2.6 to 2.7
Owner
- Name: Dave Malcolm
- Email: <dmalcolm@redhat.com>
Current status
- Targeted release: Fedora 14
- Last updated: 2010-07-27
- Percentage of completion: 90%
Packages now being built into rawhide as normal
We moved 931 builds from dist-f14-py27-rebuild to dist-f14 on 2010-07-27; a further 26 builds in dist-f14-py27-rebuild had newer builds in rawhide, so we'll need to rebuild these.
Rebuilding packages against python 2.7 (and also gcc4.5, swig2.0, gtk changes): currently 108 failing rebuilds
Packages waiting on other packages
- pyactivemq DONE :
- boost DONE needed :
- openmpi DONE (applied workaround for bug 617766)
- boost DONE needed :
- revelation needs gnome-python2-applet from:
- gnome-python2-desktop, which fails to build against gtk-3.0, apparently due to a missing header
- python-networkx needs:
- python-matplotlib
- scipiy fails, looks like this upstream bug. May need this patch to numpy (not sure yet)
- python-matplotlib
- gdl needs:
- python-matplotlib (see above)
- plplot needs:
- gnome-python2-canvas, gnome-python2-gnomevfs, gnome-python2-gnome (see below)
- gget needs
- notify-python fails to build with /usr/include/pygtk-2.0/pygtk/pygtk.h:8:21: fatal error: gtk/gtk.h: No such file or directory
- hamster-applet needs:
- many gnome-python2-* packages from gnome-python2-desktop (see above)
- sugar-tamtam needs:
- csound
- boost-python DONE
- build parameter changes
- gnome-python2-rsvg
- csound
- ipa needs
- TurboGears needs:
- python-turbojson
- python-peak-rules: fails in %check apparently within peak-util-assembler (is this 2.7-compatible?)
- python-cherrypy2
- python-peak-rules (see above)
- python-formencode fails in %check
- python-ruledispatch (fails in %check, with "KeyError: 320" in 4 tests, and "AssertionError: 42529136 == Pointer(<invalid at 0x0x288f170>)" in another)
- python-turbojson
- python-cherrypy2 (see above)
- python-formencode (see above)
- python-ruledispatch (see above)
- python-turbojson (see above)
- TurboGears needs:
- lazygal fails with AttributeError: 'module' object has no attribute 'sysconfig' (distutils module)
- python-LightBox needs
- TurboGears (and various other packages)
- python-fedora
- Needs TG1 and TG2 stack for the serverside code to function. clientside code will function without it.
- Building was blocked on python-cherrypy2 and the TG2 stack. Removed those. This gets us clientside code. Need to remove those changes and rebuild once python-cherrypy2 shows up.
- bodhi
- Needs TG1 stack for the serverside to run. clientside will function without it.
- Built a hacked up package where the serverside will likely fail. This gives us the ability to run the client-side application but needs to be fixed once the TG1 stack is rebiult.
Packages with build errors
- ecryptfs-tools fails to build with test.c:284:6: error: 'lower_byte_offset' may be used uninitialized in this function
- ocfs2-tools fails to build with mount.ocfs2.c:264:2: error: variable-sized object may not be initialized
- onboard fails to build with /usr/bin/python: can't open file 'setup.py': Errno 2 No such file or directory
- sympy fails with TypeError: not enough arguments for format string in sympy-0.6.7/sympy/utilities/runtests.py
- vtk fails to build the SRPM. The vtk-5.6.0-testcxxjavaremove.patch is missing.
- system-config-display https://bugzilla.redhat.com/show_bug.cgi?id=617777
- python-wokkel fails to build with test_failureUnknown ERROR during tests
- luci has no cvs record on devel. This package is inherited from dist-f12. See also the bug 526041
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:
- gtk-vnc DONE
- PackageKit DONE
FIXED: SWIG
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 /usr/lib 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 %prep (snip) # 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: autoconf
This was blocking:
- DONE: libopensync
- DONE: setools
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.
Porting
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.
Scope
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
Dependencies
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.
Documentation
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