[fixup]: write documentation

pull/3240/head
Mathieu Duponchelle 7 years ago
parent 33abe0cf55
commit 56fc22075c
  1. 195
      docs/markdown/Python-module.md
  2. 6
      docs/markdown/snippets/python-module.md
  3. 1
      docs/sitemap.txt
  4. 1
      docs/theme/extra/templates/navbar_links.html

@ -0,0 +1,195 @@
---
short-description: Generic python module
authors:
- name: Mathieu Duponchelle
email: mathieu@centricular.com
years: [2018]
has-copyright: false
...
# Python module
This module provides support for finding and building extensions against
python installations, be they python 2 or 3.
*Added 0.46.0*
## Functions
### `find_installation()`
``` meson
pymod.find_installation(name_or_path, ...)
```
Find a python installation matching `name_or_path`.
That argument is optional, if not provided then the returned python
installation will be the one used to run meson.
If provided, it can be:
- A simple name, eg `python-2.7`, meson will look for an external program
named that way, using [find_program]
- A path, eg `/usr/local/bin/python3.4m`
- One of `python2` or `python3`: in either case, the module will try some
alternative names: `py -2` or `py -3` on Windows, and `python` everywhere.
In the latter case, it will check whether the version provided by the
sysconfig module matches the required major version
Keyword arguments are the following:
- `required`: by default, `required` is set to `true` and Meson will
abort if no python installation can be found. If `required` is set to `false`,
Meson will continue even if no python installation was found. You can
then use the `.found()` method on the returned object to check
whether it was found or not.
**Returns**: a [python installation][`python_installation` object]
## `python_installation` object
The `python_installation` object is an [external program], with several
added methods.
### Methods
#### `extension_module()`
``` meson
shared_module py_installation.extension_module(module_name, list_of_sources, ...)
```
Create a `shared_module` target that is named according to the naming
conventions of the target platform.
All positional and keyword arguments are the same as for [shared_module],
excluding `name_suffix` and `name_prefix`, and with the addition of the following:
- `subdir`: By default, meson will install the extension module in
the relevant top-level location for the python installation, eg
`/usr/lib/site-packages`. When subdir is passed to this method,
it will be appended to that location. This keyword argument is
mutually exclusive with `install_dir`
`extension_module` does not add any dependencies to the library so user may
need to add `dependencies : py_installation.dependency()`, see [][`dependency()`].
**Returns**: a [buildtarget object]
#### `dependency()`
``` meson
python_dependency py_installation.dependency(...)
```
This method accepts the same arguments as the standard [dependency] function.
**Returns**: a [python dependency][`python_dependency` object]
#### `install_sources()`
``` meson
void py_installation.install_sources(list_of_files, ...)
```
Install actual python sources (`.py`).
All positional and keyword arguments are the same as for [install_data],
with the addition of the following:
- `pure`: On some platforms, architecture independent files are expected
to be placed in a separate directory. However, if the python sources
should be installed alongside an extension module built with this
module, this keyword argument can be used to override that behaviour.
Defaults to `true`
- `subdir`: See documentation for the argument of the same name to
[][`extension_module()`]
#### `get_install_dir()`
``` meson
string py_installation.get_install_dir(...)
```
Retrieve the directory [][`install_sources()`] will install to.
It can be useful in cases where `install_sources` cannot be used directly,
for example when using [configure_file].
This function accepts no arguments, its keyword arguments are the same
as [][`install_sources()`].
**Returns**: A string
#### `language_version()`
``` meson
string py_installation.language_version()
```
Get the major.minor python version, eg `2.7`.
The version is obtained through the `sysconfig` module.
This function expects no arguments or keyword arguments.
**Returns**: A string
#### `get_path()`
``` meson
string py_installation.get_path(path_name)
```
Get a path as defined by the `sysconfig` module.
For example:
``` meson
purelib = py_installation.get_path('purelib')
```
This function accepts a single argument, `path_name`, which is expected to
be a non-empty string.
**Returns**: A string
#### `get_variable()`
``` meson
string py_installation.get_variable(variable_name)
```
Get a variable as defined by the `sysconfig` module.
For example:
``` meson
py_bindir = py_installation.get_variable('BINDIR')
```
This function accepts a single argument, `variable_name`, which is expected to
be a non-empty string.
**Returns**: A string
## `python_dependency` object
This [dependency object] subclass will try various methods to obtain the
compiler and linker arguments, starting with pkg-config then potentially
using information obtained from python's `sysconfig` module.
It exposes the same methods as its parent class.
[find_program]: Reference-manual.md#find_program
[shared_module]: Reference-manual.md#shared_module
[external program]: Reference-manual.md#external-program-object
[dependency]: Reference-manual.md#dependency
[install_data]: Reference-manual.md#install-data
[configure_file]: Reference-manual.md#configure-file
[dependency object]: Reference-manual.md#dependency-object
[buildtarget object]: Reference-manual.md#build-target-object

@ -0,0 +1,6 @@
# Generic python module
This is a revamped and generic (python 2 and 3) version of the python3
module. With this new interface, projects can now fully specify the version
of python they want to build against / install sources to, and can do so
against multiple major or minor versions in parallel.

@ -32,6 +32,7 @@ index.md
i18n-module.md
Icestorm-module.md
Pkgconfig-module.md
Python-module.md
Python-3-module.md
Qt4-module.md
Qt5-module.md

@ -8,6 +8,7 @@
@for tup in (("Gnome-module.html","GNOME"), \
("i18n-module.html","i18n"), \
("Pkgconfig-module.html","Pkgconfig"), \
("Python-module.html","Python"), \
("Python-3-module.html","Python 3"), \
("Qt4-module.html","Qt4"), \
("Qt5-module.html","Qt5"), \

Loading…
Cancel
Save