Enable v2 resolver on the workspace to enable dropping PYO3_CI workaround.

This commit is contained in:
Adam Reichold 2023-06-05 18:48:11 +02:00
parent e1f028f3e5
commit f6e1f26676
4 changed files with 16 additions and 28 deletions

View file

@ -198,6 +198,3 @@ jobs:
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
RUSTFLAGS: "-D warnings" RUSTFLAGS: "-D warnings"
RUSTDOCFLAGS: "-D warnings" RUSTDOCFLAGS: "-D warnings"
# TODO: this is a hack to workaround compile_error! warnings about auto-initialize on PyPy
# Once cargo's `resolver = "2"` is stable (~ MSRV Rust 1.52), remove this.
PYO3_CI: 1

View file

@ -188,6 +188,7 @@ members = [
"examples", "examples",
"xtask" "xtask"
] ]
resolver = "2"
[package.metadata.docs.rs] [package.metadata.docs.rs]
no-default-features = true no-default-features = true

View file

@ -4,30 +4,21 @@ use pyo3_build_config::pyo3_build_script_impl::{cargo_env_var, errors::Result};
use pyo3_build_config::{bail, print_feature_cfgs, InterpreterConfig}; use pyo3_build_config::{bail, print_feature_cfgs, InterpreterConfig};
fn ensure_auto_initialize_ok(interpreter_config: &InterpreterConfig) -> Result<()> { fn ensure_auto_initialize_ok(interpreter_config: &InterpreterConfig) -> Result<()> {
if cargo_env_var("CARGO_FEATURE_AUTO_INITIALIZE").is_some() { if cargo_env_var("CARGO_FEATURE_AUTO_INITIALIZE").is_some() && !interpreter_config.shared {
if !interpreter_config.shared { bail!(
bail!( "The `auto-initialize` feature is enabled, but your python installation only supports \
"The `auto-initialize` feature is enabled, but your python installation only supports \ embedding the Python interpreter statically. If you are attempting to run tests, or a \
embedding the Python interpreter statically. If you are attempting to run tests, or a \ binary which is okay to link dynamically, install a Python distribution which ships \
binary which is okay to link dynamically, install a Python distribution which ships \ with the Python shared library.\n\
with the Python shared library.\n\ \n\
\n\ Embedding the Python interpreter statically does not yet have first-class support in \
Embedding the Python interpreter statically does not yet have first-class support in \ PyO3. If you are sure you intend to do this, disable the `auto-initialize` feature.\n\
PyO3. If you are sure you intend to do this, disable the `auto-initialize` feature.\n\ \n\
\n\ For more information, see \
For more information, see \ https://pyo3.rs/v{pyo3_version}/\
https://pyo3.rs/v{pyo3_version}/\ building_and_distribution.html#embedding-python-in-rust",
building_and_distribution.html#embedding-python-in-rust", pyo3_version = env::var("CARGO_PKG_VERSION").unwrap()
pyo3_version = env::var("CARGO_PKG_VERSION").unwrap() );
);
}
// TODO: PYO3_CI env is a hack to workaround CI with PyPy, where the `dev-dependencies`
// currently cause `auto-initialize` to be enabled in CI.
// Once MSRV is 1.51 or higher, use cargo's `resolver = "2"` instead.
if interpreter_config.implementation.is_pypy() && env::var_os("PYO3_CI").is_none() {
bail!("the `auto-initialize` feature is not supported with PyPy");
}
} }
Ok(()) Ok(())
} }

View file

@ -628,7 +628,6 @@ def _for_all_version_configs(
with tempfile.NamedTemporaryFile("r+") as config: with tempfile.NamedTemporaryFile("r+") as config:
env = os.environ.copy() env = os.environ.copy()
env["PYO3_CONFIG_FILE"] = config.name env["PYO3_CONFIG_FILE"] = config.name
env["PYO3_CI"] = "1"
def _job_with_config(implementation, version) -> bool: def _job_with_config(implementation, version) -> bool:
config.seek(0) config.seek(0)