Python MultiArch Installation
See Python/Python3.3 for general issues with Python 3.3. See Multiarch for general information on the Debian multiarch effort.
PythonX.Y packages
The experimental release has Python3.3 and Python2.7 (the latter still in NEW) packaged for installation as a Multi-Arch package. There is no plan to provide the multiarch installation for 2.6 and 3.2; these python versions need to be dropped first in jessie.
The packages pythonX.Y-minimal, pythonX.Y, pythonX.Y-dev and pythonX.Y-dbg are split, the library parts are now found in the packages libpythonX.Y-minimal, libpythonX.Y-stdlib, libpythonX.Y-dev and libpythonX.Y-dbg. Package build-dependencies and dependencies do not have to be changed for package builds for now. The new lib* packages are Multi-Arch: same, the existing pythonX.Y packages are now Multi-Arch: allowed.
Some installation paths and file names are changed:
pyconfig.h is now located in /usr/include/<multiarch>/pythonX.Y<abitags>, the architecture independent parts stay in /usr/include/pythonX.Y<abitags>. Some configuration code will be broken by this change, because two directories need to be included. (An alternative to move all headers into the multiarch location does break almost the same configurations.) To fix these issues:
Use pythonX.Y-config --includes (which includes both directories)
Use pkgconfig --cflags python-X.Y (which includes both directories)
- If distutils/sysconfig/get_python_inc is used, use a second call, calling with plat_specific=1.
The config directory (still needed by some older extension modules) is now located in /usr/lib/pythonX.Y/config-X.Y<abitags>-<multiarch>. Use pythonX-Y-config --configdir to get the path.
The name of the plat-linux2 directory was changed to plat-<multiarch> (this should be transparent, as it is still found on sys.path).
- Extensions are looked up in a multiarch specific filename, before looking in the default filename.
For python2.7, foo.<multiarch>.so and foo.<multiarch>_d.so are used.
For python3.3, foo.cpython-33m-<multiarch>.so and foo.cpython-33dm-<multiarch>.so are used.
Python defaults packages
The defaults packages for python, python-dev, python-dbg need to become Arch: any packages, Multi-Arch: allowed.
Third party modules
Extension modules can be made Multi-Arch same, if it doesn't have any file conflicts. Normally that does mean to rename the files for extension modules (Note: dh_python[23] doesn't support this renaming yet).
If an architecture dependent python-foo (Multi-Arch: same) package depends on a binary independent python-bar package, this python-bar package has to be made Multi-Arch: allowed.
Cross builds
Currently just the python3.3 package can be cross-built. Most python build systems are not yet ready for cross builds.