Struct maturin::BuildContext
source · pub struct BuildContext {Show 21 fields
pub target: Target,
pub compile_targets: Vec<CompileTarget>,
pub project_layout: ProjectLayout,
pub pyproject_toml_path: PathBuf,
pub pyproject_toml: Option<PyProjectToml>,
pub metadata23: Metadata23,
pub crate_name: String,
pub module_name: String,
pub manifest_path: PathBuf,
pub target_dir: PathBuf,
pub out: PathBuf,
pub release: bool,
pub strip: bool,
pub skip_auditwheel: bool,
pub zig: bool,
pub platform_tag: Vec<PlatformTag>,
pub interpreter: Vec<PythonInterpreter>,
pub cargo_metadata: Metadata,
pub universal2: bool,
pub editable: bool,
pub cargo_options: CargoOptions,
}
Expand description
Contains all the metadata required to build the crate
Fields§
§target: Target
The platform, i.e. os and pointer width
compile_targets: Vec<CompileTarget>
List of Cargo targets to compile
project_layout: ProjectLayout
Whether this project is pure rust or rust mixed with python
pyproject_toml_path: PathBuf
The path to pyproject.toml. Required for the source distribution
pyproject_toml: Option<PyProjectToml>
Parsed pyproject.toml if any
metadata23: Metadata23
Python Package Metadata 2.3
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 metadata23
manifest_path: PathBuf
The path to the Cargo.toml. Required for the cargo invocations
target_dir: PathBuf
Directory for all generated artifacts
out: PathBuf
The directory to store the built wheels in. Defaults to a new “wheels” directory in the project’s target directory
release: bool
Build artifacts in release mode, with optimizations
strip: bool
Strip the library for minimum file size
skip_auditwheel: bool
Skip checking the linked libraries for manylinux/musllinux compliance
zig: bool
When compiling for manylinux, use zig as linker to ensure glibc version compliance
platform_tag: Vec<PlatformTag>
Whether to use the the manylinux/musllinux or use the native linux tag (off)
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)
editable: bool
Build editable wheels
cargo_options: CargoOptions
Cargo build options
Implementations§
source§impl BuildContext
impl BuildContext
sourcepub fn build_wheels(&self) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_wheels(&self) -> Result<Vec<BuiltWheelMetadata>>
Checks which kind of bindings we have (pyo3/rust-cypthon or cffi or bin) and calls the correct builder.
sourcepub fn bridge(&self) -> &BridgeModel
pub fn bridge(&self) -> &BridgeModel
Bridge model
sourcepub fn build_source_distribution(&self) -> Result<Option<BuiltWheelMetadata>>
pub fn build_source_distribution(&self) -> Result<Option<BuiltWheelMetadata>>
Builds a source distribution and returns the same metadata as BuildContext::build_wheels
sourcepub fn get_platform_tag(&self, platform_tags: &[PlatformTag]) -> Result<String>
pub fn get_platform_tag(&self, platform_tags: &[PlatformTag]) -> Result<String>
Returns the platform part of the tag for the wheel name
Returns the tags for the WHEEL file for cffi wheels
Returns the tags for the platform without python version
sourcepub fn build_binding_wheel_abi3(
&self,
interpreters: &[PythonInterpreter],
major: u8,
min_minor: u8
) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_binding_wheel_abi3( &self, interpreters: &[PythonInterpreter], major: u8, min_minor: u8 ) -> Result<Vec<BuiltWheelMetadata>>
For abi3 we only need to build a single wheel and we don’t even need a python interpreter for it
sourcepub fn build_binding_wheels(
&self,
interpreters: &[PythonInterpreter]
) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_binding_wheels( &self, interpreters: &[PythonInterpreter] ) -> Result<Vec<BuiltWheelMetadata>>
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
sourcepub fn compile_cdylib(
&self,
python_interpreter: Option<&PythonInterpreter>,
extension_name: Option<&str>
) -> Result<BuildArtifact>
pub fn compile_cdylib( &self, python_interpreter: Option<&PythonInterpreter>, extension_name: Option<&str> ) -> Result<BuildArtifact>
Runs cargo build, extracts the cdylib from the output and returns the path to it
The module name is used to warn about missing a PyInit_<module name>
function for
bindings modules.
sourcepub fn build_cffi_wheel(&self) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_cffi_wheel(&self) -> Result<Vec<BuiltWheelMetadata>>
Builds a wheel with cffi bindings
sourcepub fn build_uniffi_wheel(&self) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_uniffi_wheel(&self) -> Result<Vec<BuiltWheelMetadata>>
Builds a wheel with uniffi bindings
sourcepub fn build_bin_wheel(
&self,
python_interpreter: Option<&PythonInterpreter>
) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_bin_wheel( &self, python_interpreter: Option<&PythonInterpreter> ) -> Result<Vec<BuiltWheelMetadata>>
Builds a wheel that contains a binary
Runs [auditwheel_rs()] if not deactivated
sourcepub fn build_bin_wheels(
&self,
interpreters: &[PythonInterpreter]
) -> Result<Vec<BuiltWheelMetadata>>
pub fn build_bin_wheels( &self, interpreters: &[PythonInterpreter] ) -> Result<Vec<BuiltWheelMetadata>>
Builds a wheel that contains a binary
Runs [auditwheel_rs()] if not deactivated
Trait Implementations§
source§impl Clone for BuildContext
impl Clone for BuildContext
source§fn clone(&self) -> BuildContext
fn clone(&self) -> BuildContext
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more