Struct maturin::BuildContext[][src]

pub struct BuildContext {
    pub target: Target,
    pub bridge: BridgeModel,
    pub project_layout: ProjectLayout,
    pub metadata21: Metadata21,
    pub scripts: HashMap<String, String>,
    pub crate_name: String,
    pub module_name: String,
    pub manifest_path: PathBuf,
    pub out: PathBuf,
    pub release: bool,
    pub strip: bool,
    pub skip_auditwheel: bool,
    pub manylinux: Manylinux,
    pub cargo_extra_args: Vec<String>,
    pub rustc_extra_args: Vec<String>,
    pub interpreter: Vec<PythonInterpreter>,
    pub cargo_metadata: Metadata,
    pub universal2: bool,
}

Contains all the metadata required to build the crate

Fields

target: Target

The platform, i.e. os and pointer width

bridge: BridgeModel

Whether to use cffi or pyo3/rust-cpython

project_layout: ProjectLayout

Whether this project is pure rust or rust mixed with python

metadata21: Metadata21

Python Package Metadata 2.1

scripts: HashMap<String, String>

The [console_scripts] for the entry_points.txt

crate_name: String

The name of the crate

module_name: String

The name of the module can be distinct from the package name, mostly because package names normally contain minuses while module names have underscores. The package name is part of metadata21

manifest_path: PathBuf

The path to the Cargo.toml. Required for the cargo invocations

out: PathBuf

The directory to store the built wheels in. Defaults to a new “wheels” directory in the project’s target directory

release: bool

Pass –release to cargo

strip: bool

Strip the library for minimum file size

skip_auditwheel: bool

Whether to skip checking the linked libraries for manylinux compliance

manylinux: Manylinux

Whether to use the the manylinux or use the native linux tag (off)

cargo_extra_args: Vec<String>

Extra arguments that will be passed to cargo as cargo rustc [...] [arg1] [arg2] --

rustc_extra_args: Vec<String>

Extra arguments that will be passed to rustc as cargo rustc [...] -- [arg1] [arg2]

interpreter: Vec<PythonInterpreter>

The available python interpreter

cargo_metadata: Metadata

Cargo.toml as resolved by cargo_metadata

universal2: bool

Whether to use universal2 or use the native macOS tag (off)

Implementations

impl BuildContext[src]

pub fn build_wheels(&self) -> Result<Vec<(PathBuf, String)>>[src]

Checks which kind of bindings we have (pyo3/rust-cypthon or cffi or bin) and calls the correct builder. Returns a Vec that contains location, python tag (e.g. py3 or cp35) and for bindings the python interpreter they bind against.

pub fn build_source_distribution(&self) -> Result<Option<(PathBuf, String)>>[src]

Builds a source distribution and returns the same metadata as BuildContext::build_wheels

pub fn build_binding_wheel_abi3(
    &self,
    major: u8,
    min_minor: u8
) -> Result<Vec<(PathBuf, String)>>
[src]

For abi3 we only need to build a single wheel and we don’t even need a python interpreter for it

pub fn build_binding_wheels(&self) -> Result<Vec<(PathBuf, String)>>[src]

Builds wheels for a Cargo project for all given python versions. Return type is the same as BuildContext::build_wheels()

Defaults to 3.{5, 6, 7, 8, 9} if no python versions are given and silently ignores all non-existent python versions.

Runs auditwheel_rs() if not deactivated

pub fn compile_cdylib(
    &self,
    python_interpreter: Option<&PythonInterpreter>,
    module_name: Option<&str>
) -> Result<PathBuf>
[src]

Runs cargo build, extracts the cdylib from the output, runs auditwheel and returns the artifact

The module name is used to warn about missing a PyInit_<module name> function for bindings modules.

pub fn build_cffi_wheel(&self) -> Result<Vec<(PathBuf, String)>>[src]

Builds a wheel with cffi bindings

pub fn build_bin_wheel(&self) -> Result<Vec<(PathBuf, String)>>[src]

Builds a wheel that contains a binary

Runs auditwheel_rs() if not deactivated

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,