[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Proposal: Reorganizing Python for Python 2.0



Hi all,

  I'm posting my proposal as Gregor ask me to. Its purpose is to
  regorganise python in order to make multiple versions and modules
  at the same time.

  1) Problem:
    - we want python 2 to enter debian ASAP
    - we do not want to duplicate packages for python 2
    - the python version number is hard coded in the path to
      python modules.

  2) Proposal:  
    I'm proposing to reorganise the python tree as follows (I'm considering
  only site packages in this case, are this is what is problematic) :
  
  /usr/lib/python/1.5/site-packages
    This directory contains python 1.5.2 modules that are not compatible
    with greater version of python (i.e. 2.0)

  /usr/lib/python/2.0/site-packages
    This directory contains python 2.0-specific modules. These are not compatible
    with earlier versions of python (i.e. 1.5).

  /usr/lib/python/site-packages
    This directory contains python packages that are runnable "with
    all pythons".

  3) Sceneries:
    . Python 1.5 was installed and we decide to install 2.0
      python 1.5 specific packages are installed in ...python/1.5/site-packages
      other packages are installed in ...python/site-packages

      * we make /usr/bin/python point to python 2 thanks to alternatives
      * we run a compileall.py in python/site-packages in order to
        get them byte-recompiled for 2.0

    . 1.5 and 2.0 are both present on the system
      and we uninstall 1.5

      * nothing to do

    . 1.5 and 2.0 are both present on the system
      and we want to uninstall 2.0

      * we remove the alternative so that /usr/bin/python points to 1.5
      * we run compileall.py in python/site-packages in order to get them
        byte-recompiled for the earlier version (i.e. 1.5)

    . 2.0 in the only one installed

      * nothing to do

  4) Modifiying the interpreters:
    .The interpreters have to dynamically look for the following path, in
    the following order:
    - /usr/lib/python/<their version>/site-packages
    - /usr/lib/python/site-packages

    . postint
      Add compileall for /usr/lib/python/site-packages

    . postrm
      Add compileall for /usr/lib/python/site-packages if another
      interpreter is present on the system.

    . control    
      Add a versioned provides, Provides: python (= 2.0)

  5) Modifying site packages:
    People will have to check the compatibility of they modules with
    1.5 and 2.0 and install them in the new tree as explained in the
    proposal.

    So, 3 kinds of dependencies :
      Depends: python (>= 2.0)  for /usr/lib/python/2.0/site-packages
      Depdens: python (>= 1.5), python (<= 1.5.2) for /usr/lib/python/1.5/site-packages
      Depends: python (>= 1.5) for /usr/lib/python/site-packages

  Did I miss something ?

  6) If this can be implemented, we'll have to:

  - make new python 1.5 packages
  - release python 2.0 in experimental
  - change our packages to test the new implementation
  - fill bug report for all python packages
  - once tested, we'll be ready for woody.

  Any comment, ideas ?

  Thanks.

  Cheers,

-- 
Jérôme Marant <jerome.marant@free.fr>

http://jerome.marant.free.fr



Reply to: