Skip to content

Commit

Permalink
Support arm7l, aarch64 architectures and manylinux2014 tag
Browse files Browse the repository at this point in the history
The architecture, wheel names, and shared object names
match what is specified in CPython and pip.

arm7l and aarch64 are supported for Linux only.

Target::from_target_triple() returns an Err on an
unsupported OS and architecture combination.

This allows building arm7l and aarch64 on manylinux1 and
manylinux2010, which should not work in pip.
Target::from_target_triple() could be expanded to error
on this but that needs more refactoring than seems
appropriate here.
  • Loading branch information
ijl committed Feb 28, 2020
1 parent 7f3647e commit 89ad229
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 111 deletions.
7 changes: 0 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ sha2 = "0.8.0"
shlex = "0.1.1"
structopt = "0.3.5"
tar = "0.4.26"
target_info = "0.1.0"
tempfile = "3.1.0"
toml = "0.5.5"
walkdir = "2.2.8"
Expand Down
74 changes: 39 additions & 35 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ pyo3 will set the used python interpreter in the environment variable `PYTHON_SY

Cffi wheels are compatible with all python versions, but they need to have `cffi` installed for the python used for building (`pip install cffi`).

maturin will utilize cbindgen to generate a header file. To customize the header file you can either configure cbindgen through a cbindgen.toml file inside your project root or write a setup a build script which writes a header file to `$PROJECT_ROOT/target/header.h`.
maturin will utilize cbindgen to generate a header file. To customize the header file you can either configure cbindgen through a cbindgen.toml file inside your project root or write a setup a build script which writes a header file to `$PROJECT_ROOT/target/header.h`.

Based on this header file maturin generates a module which exports an `ffi` and a `lib` object.

Expand Down Expand Up @@ -178,22 +178,22 @@ maturin can build wheels for pypy with pyo3. Note that pypy [is not compatible w

```
FLAGS:
-h, --help
-h, --help
Prints help information
--no-sdist
--no-sdist
Don't build a source distribution
--release
--release
Pass --release to cargo
--skip-auditwheel
--skip-auditwheel
[deprecated, use --manylinux instead] Don't check for manylinux compliance
--strip
--strip
Strip the library for minimum file size
-V, --version
-V, --version
Prints version information
Expand All @@ -203,56 +203,58 @@ OPTIONS:
--cargo-extra-args <cargo-extra-args>...
Extra arguments that will be passed to cargo as `cargo rustc [...] [arg1] [arg2] --`
Use as `--cargo-extra-args="--my-arg"`
-i, --interpreter <interpreter>...
The python versions to build wheels for, given as the names of the interpreters. Uses autodiscovery if not
explicitly set.
--manylinux <manylinux>
Control the platform tag on linux.
- `1`: Use the manylinux1 tag and check for compliance
- `1-unchecked`: Use the manylinux1 tag without checking for compliance
- `2010`: Use the manylinux2010 tag and check for compliance
- `2010-unchecked`: Use the manylinux1 tag without checking for compliance
- `2010-unchecked`: Use the manylinux2010 tag without checking for compliance
- `2014`: Use the manylinux2014 tag and check for compliance
- `2014-unchecked`: Use the manylinux2014 tag without checking for compliance
- `off`: Use the native linux tag (off)
This option is ignored on all non-linux platforms [default: 1] [possible values: 1, 1-unchecked, 2010,
2010-unchecked, off]
-o, --out <out>
The directory to store the built wheels in. Defaults to a new "wheels" directory in the project's target
directory
-m, --manifest-path <path>
-m, --manifest-path <path>
The path to the Cargo.toml [default: Cargo.toml]
--rustc-extra-args <rustc-extra-args>...
Extra arguments that will be passed to rustc as `cargo rustc [...] -- [arg1] [arg2]`
Use as `--rustc-extra-args="--my-arg"`
--target <triple>
--target <triple>
The --target option for cargo
```

### Publish

```
FLAGS:
--debug
--debug
Do not pass --release to cargo
-h, --help
-h, --help
Prints help information
--no-sdist
--no-sdist
Don't build a source distribution
--no-strip
--no-strip
Strip the library for minimum file size
--skip-auditwheel
--skip-auditwheel
[deprecated, use --manylinux instead] Don't check for manylinux compliance
-V, --version
-V, --version
Prints version information
Expand All @@ -262,59 +264,61 @@ OPTIONS:
--cargo-extra-args <cargo-extra-args>...
Extra arguments that will be passed to cargo as `cargo rustc [...] [arg1] [arg2] --`
Use as `--cargo-extra-args="--my-arg"`
-i, --interpreter <interpreter>...
The python versions to build wheels for, given as the names of the interpreters. Uses autodiscovery if not
explicitly set.
--manylinux <manylinux>
Control the platform tag on linux.
- `1`: Use the manylinux1 tag and check for compliance
- `1-unchecked`: Use the manylinux1 tag without checking for compliance
- `2010`: Use the manylinux2010 tag and check for compliance
- `2010-unchecked`: Use the manylinux1 tag without checking for compliance
- `2014`: Use the manylinux2010 tag and check for compliance
- `2014-unchecked`: Use the manylinux1 tag without checking for compliance
- `off`: Use the native linux tag (off)
This option is ignored on all non-linux platforms [default: 1] [possible values: 1, 1-unchecked, 2010,
2010-unchecked, off]
2010-unchecked, 2014, 2014-unchecked, off]
-o, --out <out>
The directory to store the built wheels in. Defaults to a new "wheels" directory in the project's target
directory
-p, --password <password>
Password for pypi or your custom registry. Note that you can also pass the password through MATURIN_PASSWORD
-m, --manifest-path <path>
-m, --manifest-path <path>
The path to the Cargo.toml [default: Cargo.toml]
-r, --repository-url <registry>
The url of registry where the wheels are uploaded to [default: https://upload.pypi.org/legacy/]
--rustc-extra-args <rustc-extra-args>...
Extra arguments that will be passed to rustc as `cargo rustc [...] -- [arg1] [arg2]`
Use as `--rustc-extra-args="--my-arg"`
--target <triple>
--target <triple>
The --target option for cargo
-u, --username <username>
-u, --username <username>
Username for pypi or your custom registry
```

### Develop

```
FLAGS:
-h, --help
-h, --help
Prints help information
--release
--release
Pass --release to cargo
--strip
--strip
Strip the library for minimum file size
-V, --version
-V, --version
Prints version information
Expand All @@ -324,14 +328,14 @@ OPTIONS:
--cargo-extra-args <cargo-extra-args>...
Extra arguments that will be passed to cargo as `cargo rustc [...] [arg1] [arg2] --`
Use as `--cargo-extra-args="--my-arg"`
-m, --manifest-path <manifest-path>
-m, --manifest-path <manifest-path>
The path to the Cargo.toml [default: Cargo.toml]
--rustc-extra-args <rustc-extra-args>...
Extra arguments that will be passed to rustc as `cargo rustc [...] -- [arg1] [arg2]`
Use as `--rustc-extra-args="--my-arg"`
```

Expand Down
6 changes: 4 additions & 2 deletions src/build_options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ pub struct BuildOptions {
/// - `1`: Use the manylinux1 tag and check for compliance{n}
/// - `1-unchecked`: Use the manylinux1 tag without checking for compliance{n}
/// - `2010`: Use the manylinux2010 tag and check for compliance{n}
/// - `2010-unchecked`: Use the manylinux1 tag without checking for compliance{n}
/// - `2010-unchecked`: Use the manylinux2010 tag without checking for compliance{n}
/// - `2014`: Use the manylinux2010 tag and check for compliance{n}
/// - `2014-unchecked`: Use the manylinux2014 tag without checking for compliance{n}
/// - `off`: Use the native linux tag (off)
///
/// This option is ignored on all non-linux platforms
#[structopt(
long,
possible_values = &["1", "1-unchecked", "2010", "2010-unchecked", "off"],
possible_values = &["1", "1-unchecked", "2010", "2010-unchecked", "2014", "2014-unchecked", "off"],
case_insensitive = true,
default_value = "1"
)]
Expand Down
Loading

0 comments on commit 89ad229

Please sign in to comment.