Please comment. Neil
Debian Python Policy --------------------
Neil Schemenauer <[EMAIL PROTECTED]> version 0.1 ------------------------------------------------------------------------------- Abstract -------- This document describes the packaging of Python within the Debian GNU/Linux distribution and the policy requirements for packaged Python programs and modules. Copyright Notice ---------------- Copyright (C) 2001 Software in the Public Interest This manual is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A copy of the GNU General Public License is available as `/usr/share/common-licences/GPL' in the Debian GNU/Linux distribution or on the World Wide Web at The GNU Public Licence (http://www.gnu.org/copyleft/gpl.html). You can also obtain it by writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ------------------------------------------------------------------------------- Contents -------- 1. Python Packaging 1.1. Stable and Legacy Versions 1.2. Module Path 2. Packaged Modules 2.1. Dependencies 2.2. Installation 2.3. Module Package Names 3. Python Programs 3.1. Version Independent Programs 3.2. Version Dependent Programs 4. Programs Embedding Python 4.1. Building Embedded Programs 4.2. Embedded Python Dependencies ------------------------------------------------------------------------------- 1. Python Packaging ------------------- 1.1. Stable and Legacy Versions ------------------------------- At any given time, the package `python' should represent the current stable upstream version of Python. Only one package may contain the `/usr/bin/python' binary and that package must either be `python' or a dependency of that package. The `python' package must provide `python-<X>.<Y>'; where <X> and <Y> represent the major and minor versions of the Python, respectively. There can be any number of legacy Python packages available. These must be named `python-<X>.<Y>' and include the file `/usr/bin/python<X>.<Y>'. 1.2. Module Path ---------------- Python searches a number of directories for modules. The module search path for Debian has been ordered to include these locations at the beginning of the path in the following order: /usr/local/lib/site-python /usr/local/lib/python<X>.<Y>/site-packages /usr/lib/python<X>.<Y>/site-packages ------------------------------------------------------------------------------- 2. Packaged Modules ------------------- 2.1. Dependencies ----------------- Packaged modules must depend on `python-<X>.<Y>'. 2.2. Installation ----------------- Packaged modules must install into `/usr/lib/pythonX.Y/site-packages'. After installation, Python source files must be compiled. This should be done with a `postint' script similar to the following example: #! /bin/sh -e PACKAGE=python-extension VERSION=<X>.<Y> LIB="/usr/lib/python$VERSION" DIRLIST="$LIB/site-packages/extension" case "$1" in configure|abort-upgrade|abort-remove|abort-deconfigure) for i in $DIRLIST ; do /usr/bin/python$VERSION -O $LIB/compileall.py -q $i /usr/bin/python$VERSION $LIB/compileall.py -q $i done ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac Before removal of the package, the compiled files must be removed. This can be done with a `prerm' script similar to the following example: #! /bin/sh -e PACKAGE=python-extension dpkg --listfiles $PACKAGE | awk '$0~/\.py$/ {print $0"c\n" $0"o"}' | xargs rm -f >&2 2.3. Module Package Names ------------------------- Python module packages should be named for the primary module provided. The naming convention for module `foo' is `python-foo'. Packages which include multiple modules may additionally include provides for those modules using the same convention. ------------------------------------------------------------------------------- 3. Python Programs ------------------ 3.1. Version Independent Programs --------------------------------- Programs that can run with any version of Python must start with `#!/usr/bin/python'. They must also specify a dependency on `python'. 3.2. Version Dependent Programs ------------------------------- Programs which require a specific version of Python must start with `#!/usr/bin/python<X>.<Y>'. They must also specify a dependency on `python-<X>.<Y>'. ------------------------------------------------------------------------------- 4. Programs Embedding Python ---------------------------- 4.1. Building Embedded Programs ------------------------------- Programs which embed a Python interpreter must declare a `Build-Depends' on `python-dev'. 4.2. Embedded Python Dependencies --------------------------------- Dependencies for programs linking against the shared Python library will be automatically created by `dpkg-shlibdeps'. ------------------------------------------------------------------------------- Debian Python Policy Neil Schemenauer <[EMAIL PROTECTED]> version 0.1