pyo3-build-config: Use "m" ABI tag for libpython-3.7 by default
According to https://bugs.python.org/issue36707, this tag is useless since version 3.4, but also the default until version 3.8. For example, Debian 10 ships `libpython3.7m.so`.
This commit is contained in:
parent
1971dd7a8a
commit
8f9976ad33
|
@ -6,6 +6,12 @@ PyO3 versions, please see the [migration guide](https://pyo3.rs/latest/migration
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Default to "m" ABI tag when choosing `libpython` link name for CPython 3.7 on Unix. [#2288](https://github.com/PyO3/pyo3/pull/2288)
|
||||||
|
|
||||||
## [0.16.3] - 2022-04-05
|
## [0.16.3] - 2022-04-05
|
||||||
|
|
||||||
### Packaging
|
### Packaging
|
||||||
|
|
|
@ -1505,7 +1505,15 @@ fn default_lib_name_unix(
|
||||||
match implementation {
|
match implementation {
|
||||||
PythonImplementation::CPython => match ld_version {
|
PythonImplementation::CPython => match ld_version {
|
||||||
Some(ld_version) => format!("python{}", ld_version),
|
Some(ld_version) => format!("python{}", ld_version),
|
||||||
None => format!("python{}.{}", version.major, version.minor),
|
None => {
|
||||||
|
if version > PythonVersion::PY37 {
|
||||||
|
// PEP 3149 ABI version tags are finally gone
|
||||||
|
format!("python{}.{}", version.major, version.minor)
|
||||||
|
} else {
|
||||||
|
// Work around https://bugs.python.org/issue36707
|
||||||
|
format!("python{}.{}m", version.major, version.minor)
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
PythonImplementation::PyPy => {
|
PythonImplementation::PyPy => {
|
||||||
if version >= (PythonVersion { major: 3, minor: 9 }) {
|
if version >= (PythonVersion { major: 3, minor: 9 }) {
|
||||||
|
@ -2142,10 +2150,15 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn default_lib_name_unix() {
|
fn default_lib_name_unix() {
|
||||||
use PythonImplementation::*;
|
use PythonImplementation::*;
|
||||||
// Defaults to pythonX.Y for CPython
|
// Defaults to python3.7m for CPython 3.7
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
super::default_lib_name_unix(PythonVersion { major: 3, minor: 7 }, CPython, None),
|
super::default_lib_name_unix(PythonVersion { major: 3, minor: 7 }, CPython, None),
|
||||||
"python3.7",
|
"python3.7m",
|
||||||
|
);
|
||||||
|
// Defaults to pythonX.Y for CPython 3.8+
|
||||||
|
assert_eq!(
|
||||||
|
super::default_lib_name_unix(PythonVersion { major: 3, minor: 8 }, CPython, None),
|
||||||
|
"python3.8",
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
super::default_lib_name_unix(PythonVersion { major: 3, minor: 9 }, CPython, None),
|
super::default_lib_name_unix(PythonVersion { major: 3, minor: 9 }, CPython, None),
|
||||||
|
|
Loading…
Reference in New Issue