From Fedora Project Wiki
m (internal link cleaning)
 
(182 intermediate revisions by 12 users not shown)
Line 7: Line 7:


== Summary ==
== Summary ==
Update the system Python 2 in Fedora from 2.6 to 2.7 <!-- A sentence or two summarizing what this feature is and what it will do.  This information is used for the overall feature summary page for each release. -->
Update the system Python 2 stack in Fedora from 2.6 to 2.7 <!-- A sentence or two summarizing what this feature is and what it will do.  This information is used for the overall feature summary page for each release. -->


== Owner ==
== Owner ==
Line 17: Line 17:


== Current status ==
== Current status ==
* Targeted release: [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]]  
* Targeted release: [[Releases/14 | Fedora 14]]  
* Last updated: 2010-06-27
* Last updated: 2010-09-27
* Percentage of completion: 0%
* Percentage of completion: 100%


<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
oget wrote [http://oget.fedorapeople.org/python27/py27check.py a script] to report on remaining problems.
 
The results can be seen [http://oget.fedorapeople.org/python27/python-27-rebuild-errors-LATEST.html 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 [[Using_Fedora_GIT|here]].
 
Once it's been successfully rebuilt for F14, an [https://admin.fedoraproject.org/updates/new/ update needs to be filed ] to get the rebuild into F14.
 
To make it easier to track things, dmalcolm has been filing bugs using [https://bugzilla.redhat.com/enter_bug.cgi?alias=&assigned_to=&attachurl=&blocked=619913&bug_file_loc=http%3A%2F%2F&bug_severity=medium&bug_status=NEW&cf_build_id=&cf_clone_of=&cf_cust_facing=---&cf_devel_whiteboard=&cf_environment=&cf_internal_whiteboard=&cf_issuetracker=&cf_qa_whiteboard=&cf_targetrelease=---&comment=The%20package%20needs%20to%20be%20rebuilt%20against%20python%202.7%20in%20both%20F14%20and%20devel.%0D%0A%0D%0AInformation%20on%20the%20new%20%22dist-git%22%20system%20can%20be%20seen%20here%3A%0D%0A%20%20http%3A%2F%2Ffedoraproject.org%2Fwiki%2FUsing_Fedora_GIT%0D%0A%0D%0AInformation%20on%20common%20difficulties%20with%20Python%202.7%20rebuilds%20can%20be%20seen%20here%3A%0D%0A%20%20https%3A%2F%2Ffedoraproject.org%2Fwiki%2FFeatures%2FPython_2.7%0D%0A%0D%0AOnce%20it%27s%20been%20successfully%20rebuilt%20for%20F14%2C%20an%20update%20needs%20to%20be%20filed%20to%20get%20the%20rebuild%20into%20F14%3A%0D%0A%20%20https%3A%2F%2Fadmin.fedoraproject.org%2Fupdates%2Fnew%2F%0D%0A%0D%0APlease%20add%20this%20bug%20to%20the%20update%2C%20to%20make%20it%20easy%20to%20track%20what%27s%20been%20done%2C%20and%20what%27s%20left%20to%20do.%0D%0A%0D%0AThanks!&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&deadline=&defined_cf_partner=&dependson=&description=&estimated_time=0.0&external_bug_id=&external_id=0&flag_type-155=X&flag_type-16=X&flag_type-65=X&flag_type-66=X&flag_type-67=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Linux&priority=low&product=Fedora&qa_contact=&rep_platform=All&short_desc=needs%20to%20be%20rebuilt%20against%20python%202.7%20in%20F14%20and%20devel&status_whiteboard=&target_milestone=---&version=14 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 ===
* '''IN BODHI''' [https://admin.fedoraproject.org/updates/cyphesis-0.5.24-1.fc14 cyphesis]: Presently built and in the testing repo but regression tests have been disabled and maintainer has not looked at it. See https://bugzilla.redhat.com/show_bug.cgi?id=620298
* [http://koji.fedoraproject.org/koji/buildinfo?buildID=187814 antlr3] had a build dependency on a non-existing package, maven2-plugin-antlr. Now that the dependency has been packaged, antlr3 is built and submitted to [https://admin.fedoraproject.org/updates/antlr3-3.2-11.fc14,antlr-maven-plugin-2.1-3.20101012svn12849.fc14 testing].
 
=== Common bugs ===
==== FIXED: gobject-introspection ====
gobject-introspection's /usr/bin/g-ir-scanner was [https://bugzilla.redhat.com/show_bug.cgi?id=617782 incompatible with python 2.7], this led to anything building a .gir file failing.
 
This was blocking:
* [http://koji.fedoraproject.org/koji/getfile?taskID=2344639&name=build.log gtk-vnc] DONE
* [http://koji.fedoraproject.org/koji/getfile?taskID=2347398&name=build.log PackageKit] DONE
 
==== FIXED: SWIG ====
Various swig users fail to find the python libraries during "configure":
<pre>
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...
</pre>
 
Relevant part of "configure" seems to be
<pre>
        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
</pre>
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:
<pre>
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
</pre>
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:
<pre>
# 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
</pre>
 
This was blocking:
* DONE: [http://koji.fedoraproject.org/koji/getfile?taskID=2344787&name=build.log libopensync]
* DONE: setools


== Detailed Description ==
== Detailed Description ==
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
Python 2.7 beta 2 was released on 2010-05-08
* Python 2.7 was released on 2010-07-03


Upstream [http://python.org/dev/peps/pep-0373/ release schedule for 2.7] currently has 2.7 final release planned 2010-07-03
This will require a rebuild of everything with <code>Requires: python(abi) = 2.6</code>.  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.


http://docs.python.org/dev/whatsnew/2.7.html
=== 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 ==
== Benefit to Fedora ==
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new feature, what capabilities does it bring? Why will Fedora become a better distribution or project because of this feature?-->
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new feature, what capabilities does it bring? Why will Fedora become a better distribution or project because of this feature?-->
Fedora aims to showcase the latest in free and open source software - we should have the most recent release of Python.


== Scope ==
== Scope ==
Line 52: Line 126:
3. What are the expected results of those actions?
3. What are the expected results of those actions?
-->
-->
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 ==
== User Experience ==
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
# Users should not notice any difference, other than the availability of the 2.7 interpreter
Users should not notice any difference, other than the availability of the 2.7 interpreter
 


== Dependencies ==
== Dependencies ==
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->
The list is too large to include here.
<code>repoquery --whatrequires --alldeps -s "python(abi) = 2.6" | sort -u</code>
indicates approximately 1200 rpms


== Contingency Plan ==
== Contingency Plan ==
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* There is none. This is do-or-die.


== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
*
[http://docs.python.org/dev/whatsnew/2.7.html What’s New in Python 2.7]


== Release Notes ==
== Release Notes ==
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
*
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 [https://bugzilla.redhat.com/showdependencytree.cgi?id=620842&hide_resolved=1 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:
<pre>
>>> import warnings
>>> warnings.simplefilter('error')
>>> warnings.simplefilter('default', PendingDeprecationWarning)
</pre>


== Comments and Discussion ==
== Comments and Discussion ==
* See [[Talk:Features/YourFeatureName]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
* See [[Talk:Features/Python_2.7]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->




[[Category:FeaturePageIncomplete]]
[[Category:FeatureAcceptedF14]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
[[Category:Python]]

Latest revision as of 14:04, 18 September 2016


Python 2.7

Summary

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

Owner

  • Email: <dmalcolm@redhat.com>

Current status

  • Targeted release: Fedora 14
  • Last updated: 2010-09-27
  • Percentage of completion: 100%

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

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:

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:

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

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

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)

Comments and Discussion