DH_PYTHON2(1)                                                    DH_PYTHON2(1)



NAME
       dh_python2 - calculates Python dependencies, adds maintainer scripts to
       byte compile files, etc.

SYNOPSIS
          dh_python2 -p PACKAGE [-V [X.Y][-][A.B]] DIR_OR_FILE [-X REGEXPR]

DESCRIPTION
   QUICK GUIDE FOR MAINTAINERS
          o if necessary, describe supported Python versions via X-Python-Ver-
            sion field in debian/control,

          o build-depend   on  python  or  python-all  or  python-all-dev  (>=
            2.6.6-3~),

          o build module/application using its standard build system, remember
            to  build  extensions for all supported Python versions (loop over
            pyversions -vr),

          o install files to the standard locations, add  --install-layout=deb
            to setup.py's install command if your package is using distutils,

          o add python2 to dh's --with option, or:

          o include       /usr/share/cdbs/1/class/python-distutils.mk       in
            debian/rules and depend on cdbs (>= 0.4.90), or:

          o call dh_python2 in the binary-* target,

          o add ${python:Depends} to Depends

   NOTES
       In order to support more than one Python version  in  the  same  binary
       package, dh_python2 (unlike dh_pycentral and dh_pysupport) creates sym-
       links to all supported Python versions at build time. It  means  binNMU
       (or  sourceful  upload in case of architecture independent packages) is
       required once a list of  supported  Python  version  is  changed.  It's
       faster and more robust than its competitors, though.

   dependencies
       dh_python2  tries  to  translate  Python dependencies from requires.txt
       file to Debian dependencies. Use debian/pydist-overrides or --no-guess-
       ing-deps  option  to override it if the guess is incorrect. If you want
       dh_python2 to generate more strict  dependencies  (f.e.  to  avoid  ABI
       problems)      create      debian/python-foo.pydist      file.      See
       /usr/share/doc/python-doc/README.PyDist (provided by  python-doc  pack-
       age)  for  more information. If the pydist file contains PEP386 flag or
       set of (uscan like) rules, dh_python2 will make the depedency versioned
       (version requirements are ignored by default).

   namespace feature
       dh_python2  parses  Egg's  namespace_packages.txt files (in addition to
       --namespace command line argument(s)) and drops empty __init__.py files
       from binary package. pycompile will regenerate them at install time and
       pyclean will remove them at uninstall time (if they're no  longer  used
       in  installed  packages). It's still a good idea to provide __init__.py
       file in one of binary packages (even if all  other  packages  use  this
       feature).

   private dirs
       /usr/share/foo,       /usr/share/games/foo,       /usr/lib/foo      and
       /usr/lib/games/foo private directories are scanned for Python files  by
       default (where foo is binary package name). If your package is shipping
       Python files in some other directory, add another  dh_python2  call  in
       debian/rules with directory name as an argument - you can use different
       set of options in this call. If you need to change options (f.e. a list
       of  supported  Python versions) for a private directory that is checked
       by default,  invoke  dh_python2  with  --skip-private  option  and  add
       another call with a path to this directory and new options.

   debug packages
       In   binary   packages   which  name  ends  with  -dbg,  all  files  in
       /usr/lib/python2.X/{site,dist}-packages/ directory that have extensions
       different  than  so or h are removed by default.  Use --no-dbg-cleaning
       option to disable this feature.

   pyinstall files
       Files listed in debian/pkg.pyinstall file will be installed  as  public
       modules  for  all  requested  Python  versions (dh_install doesn't know
       about python's site- vs. dist-packages issue).

       Syntax: path/to/file [VERSION_RANGE] [NAMESPACE]

       debian directory is automatically removed from the  path,  so  you  can
       place  your files in debian/ directory and install them from this loca-
       tion (if you want to install them in "debian" namespace, set  NAMESPACE
       to  debian). If NAMESPACE is set, all listed files will be installed in
       .../dist-packages/NAMESPACE/ directory.

       Examples:

              o foo.py installs  .../dist-packages/foo.py  for  all  supported
                Python versions

              o foo/bar.py 2.6- installs .../dist-packages/foo/bar.py for ver-
                sions >= 2.6

              o foo/bar.py spam installs .../dist-packages/spam/bar.py

              o debian/*.py  spam.egg  2.5  installs  .../python2.5/site-pack-
                ages/spam/egg/*.py files

   pyremove files
       If  you  want  to remove some files installed by build system (from all
       supported Python versions or only from a subset of these versions), add
       them to debian/pkg.pyremove file.

       Examples:

              o *.pth removes .pth files from .../dist-packages/

              o bar/baz.py 2.5 removes .../python2.5/site-packages/bar/baz.py

   overriding supported / default Python versions
       If  you  want to override system's list of supported Python versions or
       the default one (f.e. to build a package  that  includes  symlinks  for
       older version of Python or compile .py files only for given interpreter
       version),   you   can   do   that   via   DEBPYTHON_SUPPORTED    and/or
       DEBPYTHON_DEFAULT env. variables.

       Example: 2.5,2.7 limits the list of supported Python versions to Python
       2.5 and Python 2.7.

OPTIONS
       --version
              show program's version number and exit

       -h, --help
              show help message and exit

       --no-guessing-versions
              disable guessing other supported Python versions

       --no-guessing-deps
              disable guessing dependencies

       --no-dbg-cleaning
              do not remove any files from debug packages

       --no-shebang-rewrite
              do not rewrite shebangs

       --skip-private
              don't check private directories

       -v, --verbose
              turn verbose mode on

       -i, --indep
              act on architecture independent packages

       -a, --arch
              act on architecture dependent packages

       -q, --quiet
              be quiet

       -p PACKAGE, --package=PACKAGE
              act on the package named PACKAGE

       -N NO_PACKAGE, --no-package=NO_PACKAGE
              do not act on the specified package

       -V VRANGE
              specify list of supported Python versions. See pycompile(1)  for
              examples

       -X REGEXPR, --exclude=REGEXPR
              exclude  items that match given REGEXPR. You may use this option
              multiple times to build up a list of things to exclude.

       --compile-all
              compile all files from given private directory in postinst/rtup-
              date not just the ones provided by the package (i.e. do not pass
              the --package parameter to pycompile/pyclean)

       --depends=DEPENDS
              translate given requirements into Debian  dependencies  and  add
              them   to   ${python:Depends}.  Use  it  for  missing  items  in
              requires.txt

       --recommends=RECOMMENDS
              translate given requirements into Debian  dependencies  and  add
              them to ${python:Recommends}

       --suggests=SUGGESTS
              translate  given  requirements  into Debian dependencies and add
              them to ${python:Suggests}

       --namespace
              use this option (multiple time if necessary) if  namespace_pack-
              ages.txt is not complete

       --ignore-namespace
              ignore  Egg's namespace declaration and --namespace option. This
              option will disable removing (and recreating  at  install  time)
              empty  __init__.py  files.  Removing namespace_packages.txt from
              egg-info directory has the same effect.

       --clean-pycentral
              generate maintainer script that will remove byte code  generated
              by python-central helper

       --shebang=COMMAND
              use given command as shebang in scripts

       --ignore-shebangs
              do not translate shebangs into Debian dependencies

SEE ALSO
       o /usr/share/doc/python/python-policy.txt.gz

       o /usr/share/doc/python-doc/README.PyDist (python-doc package)

       o pycompile(1), pyclean(1)

       o dh_python3(1), py3compile(1), py3clean(1)

       o Wiki     page     about    converting    package    to    dh_python2:
         http://wiki.debian.org/Python/TransitionToDHPython2

AUTHOR
       Piotr Oarowski, 2012-2013



                                                                 DH_PYTHON2(1)
