(Mayavi and ekg2 are fixed. remove) |
|||
Line 19: | Line 19: | ||
* Targeted release: [[Releases/14 | Fedora 14]] | * Targeted release: [[Releases/14 | Fedora 14]] | ||
* Last updated: 2010-08-10 | * Last updated: 2010-08-10 | ||
* Percentage of completion: 97% ( | * Percentage of completion: 97% (4 packages still to rebuild) | ||
oget wrote [http://oget.fedorapeople.org/python27/py27check.py a script] to report on remaining problems. | oget wrote [http://oget.fedorapeople.org/python27/py27check.py a script] to report on remaining problems. | ||
Line 40: | Line 40: | ||
=== Packages with build errors === | === Packages with build errors === | ||
* [http://koji.fedoraproject.org/koji/buildinfo?buildID=187662 cyphesis]: dmalcolm fixed the python-2.7 detection. oget fixed the compilation issues. But now the build [https://bugzilla.redhat.com/show_bug.cgi?id=620298 fails at tests]. | * [http://koji.fedoraproject.org/koji/buildinfo?buildID=187662 cyphesis]: dmalcolm fixed the python-2.7 detection. oget fixed the compilation issues. But now the build [https://bugzilla.redhat.com/show_bug.cgi?id=620298 fails at tests]. | ||
* [http://koji.fedoraproject.org/koji/taskinfo?taskID=2371319 python-psyco] fails to build from source. Seems similar to but more difficult than the python-peak-rules failure. See [https://bugzilla.redhat.com/show_bug.cgi?id=620211 bug 620211] | * [http://koji.fedoraproject.org/koji/taskinfo?taskID=2371319 python-psyco] fails to build from source. Seems similar to but more difficult than the python-peak-rules failure. See [https://bugzilla.redhat.com/show_bug.cgi?id=620211 bug 620211] | ||
* [http://koji.fedoraproject.org/koji/buildinfo?buildID=187814 antr3] has a build dependency on a non-existing package, maven2-plugin-antlr. Apparently this package got removed from the maven2-plugin set. See [https://bugzilla.redhat.com/show_bug.cgi?id=620635 bug 620635] | * [http://koji.fedoraproject.org/koji/buildinfo?buildID=187814 antr3] has a build dependency on a non-existing package, maven2-plugin-antlr. Apparently this package got removed from the maven2-plugin set. See [https://bugzilla.redhat.com/show_bug.cgi?id=620635 bug 620635] |
Revision as of 18:27, 25 August 2010
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-08-10
- Percentage of completion: 97% (4 packages still to rebuild)
oget wrote a script to report on remaining problems.
The results can be seen here
Tracker bug for packages that fail to rebuild: https://bugzilla.redhat.com/showdependencytree.cgi?id=619913&hide_resolved=1
Fixes for broken packages should be built into both rawhide, and into dist-f14.
Information on the new "dist-git" system can be seen here.
Once it's been successfully rebuilt for F14, an update needs to be filed to get the rebuild into F14.
To make it easier to track things, dmalcolm has been filing bugs using this template against the broken packages. Please set the component and add the name of the component to the front of the subject of the bug. Once an update has been created, the bug should be flipped over to the MODIFIED status, to make it easy to see what works remain.
Tracker bug for issue arising in built packages: https://bugzilla.redhat.com/showdependencytree.cgi?id=620817&hide_resolved=1 (e.g. Python 2.7 incompatibilities)
Packages with build errors
- cyphesis: dmalcolm fixed the python-2.7 detection. oget fixed the compilation issues. But now the build fails at tests.
- python-psyco fails to build from source. Seems similar to but more difficult than the python-peak-rules failure. See bug 620211
- antr3 has a build dependency on a non-existing package, maven2-plugin-antlr. Apparently this package got removed from the maven2-plugin set. See bug 620635
- shiboken failed at tests. The maintainer filed a bug upstream and rebuilt the package by disabling the tests. Now the bug is fixed upstream. The F-15 package is built already but the F-14 package is not.
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
Caveat: PyCObject and warnings
Python provides various APIs for use by C extension modules. One of these APIs, PyCObject, was deprecated in Python 2.7, but there are a number of key modules that have not yet been ported to its replacement.
By default, deprecation warnings are ignored, so this will not cause problems.
However, if the standard warnings settings are overridden, you may see problems with these modules. In particular, if warnings have been set to "error", it is possible to make the Python interpreter abort or even segfault when importing these modules.
If you need to enable errors-for-warnings, please also add an override so that a PendingDeprecationWarning is merely logged, rather than raising an exception:
>>> import warnings >>> warnings.simplefilter('error') >>> warnings.simplefilter('default', PendingDeprecationWarning)