FeistyPythonRoadmap

Differences between revisions 2 and 3
Revision 2 as of 2006-11-11 01:29:12
Size: 4805
Editor: 207
Comment: new spec
Revision 3 as of 2006-11-12 20:10:35
Size: 4911
Editor: dhcp64-134-210-59
Comment: spelling, grammar, some degermanification :-); approver comment
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
Move on to python2.5 as the default python2.5 version, keep python2.4 as supported version, define a policy to package eggs, no more code in /var/lib, revisit supported python packages in main, let the python packages play nice with apt-file and other tools again). Move on to python2.5 as the default python version, keep python2.4 as supported version, define a policy to package eggs, no more code in /var/lib, revisit supported python packages in main, let the python packages play nice with apt-file and other tools again.
Line 16: Line 16:
 * python2.4 should be still supported for applications like zope2.x, which are known to adopt new python versions late.  * python2.4 should still be supported for applications like zope2.x, which are known to adopt new python versions late.
Line 18: Line 18:
 * Python modules should install into a location, where conflicts/replaces are handled by the packaging tools, not by
  
the python packaging tools (move into a common installation directory, not into a package specific directory).
 * Do not install byte-compiled files in /var, so that code can be protected by mounting /usr ro.
 * Python modules should install into a location, where conflicts/replaces are handled by the packaging tools, not by the python packaging tools (move into a common installation directory, not into a package-specific directory).
 * Do not install byte-compiled files in /var, so that code can be protected by mounting /usr read-only.
Line 23: Line 22:
 * Make a difference between the local/user installation place and the distribution installation place to make upgrades
  
between releases more reliable.

== Design ==
 * Make a difference between the local/user installation location and the distribution installation location to make upgrades between releases more reliable.
Line 30: Line 26:
Line 33: Line 28:
 * In edgy, python2.5 is somewhat supported as a non-default version for modules and extensions, which do build using 2.5. Python2.5 support for a large number of modules was disabled; either upgrade to new upstream versions or backport patches to support 2.5 (in main, sip4-qt, python-qt and kde are affected, plus some other modules).  * In edgy, python2.5 is somewhat supported as a non-default version for modules and extensions, which build using 2.5. Python2.5 support for a large number of modules was disabled; either upgrade to new upstream versions or backport patches to support 2.5 (in main, sip4-qt, python-qt and kde are affected, plus some other modules).
Line 42: Line 37:
Eggs try to provide a distribution and installation mechanism, which duplicates to large extent the apt/dpkg tools used for packaging. Eggs try to provide a distribution and installation mechanism; this duplicates to a large extent the apt/dpkg tools used for packaging.
Line 51: Line 46:
  * Removes version information from the the .egg-info name
  * Installs into /usr/lib/pythonX.Y/dist-packages
 * Currently modules packaged to support more than one python version install into /usr/share/.../<package-name>; package tools cannot be used anymore to detect/handle file conflicts anymore. Use an installation directory which doesn't have the package name in the path.
  * Removes version information from the .egg-info name
  * Installs into /usr/lib/pythonX.Y/dist-packages
 * Currently modules packaged to support more than one python version install into /usr/share/.../<package-name>; package tools cannot be used to detect/handle file conflicts any more. Use an installation directory which doesn't have the package name in the path.
Line 58: Line 53:
  * Needs changes in the python infrastructure tools (i.e. python-central)
   * Needs changes in the packages, for which we do want to have debug builds (targeting all extensions in main for feisty).
  * Needs changes in the python infrastructure tools (i.e. python-central)
  * Needs changes in the packages for which we want to have debug builds (targeting all extensions in main for feisty).
Line 72: Line 67:
'''This section should be removed before approval; please make sure that everything here has been factored into the specification proper.'''

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

Move on to python2.5 as the default python version, keep python2.4 as supported version, define a policy to package eggs, no more code in /var/lib, revisit supported python packages in main, let the python packages play nice with apt-file and other tools again.

Rationale

  • python2.5 as the default version should be supported by most packages for the feisty schedule.
  • python2.4 should still be supported for applications like zope2.x, which are known to adopt new python versions late.
  • Every module/extension is installed as an egg in 2.5; define a way how eggs are handled in the distribution.
  • Python modules should install into a location, where conflicts/replaces are handled by the packaging tools, not by the python packaging tools (move into a common installation directory, not into a package-specific directory).
  • Do not install byte-compiled files in /var, so that code can be protected by mounting /usr read-only.
  • Revisit the python packages in main, demote/promote packages.
  • To make better use of the debug build, build third party extensions using the refcounting feature turned on.
  • Make a difference between the local/user installation location and the distribution installation location to make upgrades between releases more reliable.

Implementation

Python 2.5 as default

  • In edgy, python2.5 is somewhat supported as a non-default version for modules and extensions, which build using 2.5. Python2.5 support for a large number of modules was disabled; either upgrade to new upstream versions or backport patches to support 2.5 (in main, sip4-qt, python-qt and kde are affected, plus some other modules).
  • Make 2.5 the default after all modules/extensions are available for 2.5, not later than feature freeze.

Keep python2.4

Nothing needs to be done besides applications currently using the unversioned interpreter moving to the versioned python2.4 interpreter name.

Egg support

Eggs try to provide a distribution and installation mechanism; this duplicates to a large extent the apt/dpkg tools used for packaging.

  • We have to ship source packages, which are not supported by eggs.
  • Eggs try to support more than one version of a module/extension, which we try to avoid, shipping only one version of an extension/package.
  • Install all eggs as unversioned eggs.

Installation destinations

  • Add an option --distribution to distutils/setuptools, which installs into a location which is different from the default installation location.
    • Removes version information from the .egg-info name
    • Installs into /usr/lib/pythonX.Y/dist-packages
  • Currently modules packaged to support more than one python version install into /usr/share/.../<package-name>; package tools cannot be used to detect/handle file conflicts any more. Use an installation directory which doesn't have the package name in the path.

Debug builds

  • Add support for debug builds, handling a separate hierarchy /usr/lib/pythonX.Y/debug-packages
    • Needs changes in the python infrastructure tools (i.e. python-central)
    • Needs changes in the packages for which we want to have debug builds (targeting all extensions in main for feisty).

Revisit the python packages in main, demote/promote packages

  • Collect packages for demotion/promotion until Feb 2007.
  • Review this list on the distro meeting in Feb 2007.

Unresolved issues

Maybe split this spec into subspecs, if priorities or milestones differ for the subtopics.

BoF agenda and discussion

This section should be removed before approval; please make sure that everything here has been factored into the specification proper.

  • python2.5 as the default, new upstream versions/cvs snapshots for packages not yet in unstable/not yet released with support for python2.5)
  • packaging eggs (try to come up with guidelines how to package eggs)
  • no more code in /var/lib, currently some python code cannot be made read-only, because it's put into /var.
  • revisit supported python packages in main
  • let the python packages play nice with apt-file and other tools again (currently files are artificially installed in an unique path)
  • define and support a layout for python debug packages using the current python debug builds (with refcounting turned on).


CategorySpec

FeistyPythonRoadmap (last edited 2008-08-06 16:19:16 by localhost)