## NAME

pybuild - invokes various build systems for requested Python versions in order to build modules and extensions

\$1 \n[an-margin] level \n[rst2man-indent-level] level margin: \n[rst2man-indent\n[rst2man-indent-level]] - \n[rst2man-indent0] \n[rst2man-indent1] \n[rst2man-indent2]

## SYNOPSIS

pybuild [ACTION] [BUILD SYSTEM ARGUMENTS] [DIRECTORIES] [OPTIONS]

## DEBHELPER COMMAND SEQUENCER INTEGRATION

\(bu 2

build depend on dh-python,

\(bu 2

build depend on python3-all, python-all-dbg, pypy, etc. (for all supported Python interpreters, pybuild will use it to create a list of interpreters to build for),

\(bu 2

add --buildsystem=pybuild to dh(aqs arguments in debian/rules,

\(bu 2

if more than one binary package is build: add debian/python-foo.install files, or export PYBUILD_NAME=modulename (modulename will be used to guess binary package prefixes), or export PYBUILD_DESTDIR env. variables in debian/rules

debian/rules file example:

    #! /usr/bin/make -f
    export PYBUILD_NAME=foo
    %:
           dh $@ --with python2,python3 --buildsystem=pybuild

## OPTIONS

Most options can be set (in addition to command line) via environment variables. PyBuild will check:

\(bu 2

PYBUILD_OPTION_VERSIONED_INTERPRETER (f.e. PYBUILD_CLEAN_ARGS_python3.2)

\(bu 2

PYBUILD_OPTION_INTERPRETER (f.e. PYBUILD_CONFIGURE_ARGS_python3-dbg)

\(bu 2

PYBUILD_OPTION (f.e. PYBUILD_INSTALL_ARGS)

## optional arguments

-h,\fB --help show this help message and exit

-v,\fB --verbose turn verbose mode on

-q,\fB --quiet doesn(aqt show external command(aqs output

-q\fB q,\fB \ --really-quiet be quiet

--version show program(aqs version number and exit

## ACTION

The default is to build, install and test the library using detected build system version by version. Selecting one of following actions, will invoke given action for all versions - one by one - which (contrary to the default action) in some build systems can overwrite previous results.

--detect return the name of detected build system

--clean clean files using auto-detected build system specific methods

--configure invoke configure step for all requested Python versions

--build invoke build step for all requested Python versions

--install invoke install step for all requested Python versions

--test invoke tests for auto-detected build system

--list-systems list available build systems and exit

## TESTS

unittest(aqs discover from standard library (available in Python 2.7 and >= 3.2) is used in test step by default.

--test-nose use nose module in test step, remember to add python-nose and/or python3-nose to Build-Depends

--test-pytest use pytest module in test step, remember to add python-pytest and/or python3-pytest to Build-Depends

--test-tox use tox command in test step, remember to add python-tox to Build-Depends. Requires tox.ini file

## BUILD SYSTEM ARGUMENTS

Additional arguments passed to the build system. --system=custom requires complete command.

--before-clean \ COMMAND invoked before the clean command

--clean-args \ ARGUMENTS arguments added to clean command generated by build system plugin

--after-clean \ COMMAND invoked after the clean command

--before-configure \ COMMAND invoked before the configure command

--configure-args \ ARGUMENTS arguments added to configure command generated by build system plugin

--after-configure \ COMMAND invoked after the configure command

--before-build \ COMMAND invoked before the build command

--build-args \ ARGUMENTS arguments added to build command generated by build system plugin

--after-build \ COMMAND invoked after the build command

--before-install \ COMMAND invoked before the install command

--install-args \ ARGUMENTS arguments added to install command generated by build system plugin

--after-install \ COMMAND invoked after the install command

--before-test \ COMMAND invoked before the test command

--test-args \ ARGUMENTS arguments added to test command generated by build system plugin

--after-test \ COMMAND invoked after the test command

## variables that can be used in \fIARGUMENTS\fP and \fICOMMAND\fP

\(bu 2

{version} will be replaced with current Python version, you can also use {version.major}, {version.minor}, etc.

\(bu 2

{interpreter} will be replaced with current interpreter, you can also use {interpreter.include_dir}

\(bu 2

{dir} will be replaced with sources directory,

\(bu 2

{destdir} will be replaced with destination directory,

\(bu 2

{home_dir} will be replaced with temporary HOME directory, where plugins can keep their data (.pybuild/interpreter_version/ by default),

\(bu 2

{build_dir} will be replaced with build directory

\(bu 2

{install_dir} will be replaced with install directory.

\(bu 2

{package} will be replaced with suggested package name, if --name (or PYBUILD_NAME) is set to foo, this variable will be replaced to python-foo, python3-foo or pypy-foo depending on interpreter which is used in given iteration.

## DIRECTORIES

-d \ DIR,\fB \ --dir \ DIR set source files directory - base for other relative dirs [by default: current working directory]

--dest-dir \ DIR set destination directory [default: debian/tmp]

--ext-dest-dir \ DIR set destination directory for .so files

--ext-pattern \ PATTERN regular expression for files that should be moved if --ext-destdir is set [default: .so(.[^/]*)?$]

--install-dir \ DIR set installation directory [default: .../dist-packages]

--name \ NAME use this name to guess destination directories (depending on interpreter, "foo" sets debian/python-foo, debian/python3-foo, debian/python3-foo-dbg, etc.)

## variables that can be used in \fIDIR\fP

\(bu 2

{version} will be replaced with current Python version,

\(bu 2

{interpreter} will be replaced with selected interpreter.

## LIMITATIONS

-s \ SYSTEM,\fB \ --system \ SYSTEM select a build system [default: auto-detection]

-p \ VERSIONS,\fB \ --pyver \ VERSIONS build for Python VERSIONS. This option can be used multiple times. Versions can be separated by space character. The default is all Python 3.X supported versions.

-i \ INTERPRETER,\fB \ --interpreter \ INTERPRETER change interpreter [default: python{version}]

--disable \ ITEMS disable action, interpreter, version or any mix of them. Note that f.e. python3 and python3-dbg are two different interpreters, --disable test/python3 doesn(aqt disable python3-dbg(aqs tests.

## disable examples

\(bu 2

--disable test/python2.5-dbg - disables tests for python2.5-dbg

\(bu 2

--disable (aq2.4 2.7(aq - disables all actions for version 2.4 and 2.7

\(bu 2

PYBUILD_DISABLE_python2=1 - disables all actions for Python 2.X

\(bu 2

PYBUILD_DISABLE_python3.3=test - disables tests for Python 3.3

\(bu 2

PYBUILD_DISABLE=test/python3.3 - same as above

\(bu 2

PYBUILD_DISABLE=configure/python3 2.4 pypy - disables configure action for all python3 interpreters, all actions for version 2.4, and all actions for pypy

## SEE ALSO

\(bu 2

dh_python2(1)

\(bu 2

dh_python3(1)

\(bu 2

%https://wiki.debian.org/Python/Pybuild

\(bu 2

%http://deb.li/pybuild - most recent version of this document

## AUTHOR

Piotr Ożarowski, 2012-2013