build: fix support for non-utf8 systems
This commit is contained in:
parent
3a627587f6
commit
59dac57689
|
@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|||
### Fixed
|
||||
- Fix support for using `r#raw_idents` as argument names in pyfunctions. [#1383](https://github.com/PyO3/pyo3/pull/1383)
|
||||
- Fix unqualified `Result` usage in `pyobject_native_type_base`. [#1402](https://github.com/PyO3/pyo3/pull/1402)
|
||||
- Fix build on systems where the default Python encoding is not UTF-8. [#1405](https://github.com/PyO3/pyo3/pull/1405)
|
||||
|
||||
## [0.13.1] - 2021-01-10
|
||||
### Added
|
||||
|
|
17
build.rs
17
build.rs
|
@ -560,9 +560,20 @@ fn load_cross_compile_info(
|
|||
/// Run a python script using the specified interpreter binary.
|
||||
fn run_python_script(interpreter: &Path, script: &str) -> Result<String> {
|
||||
let out = Command::new(interpreter)
|
||||
.args(&["-c", script])
|
||||
.env("PYTHONIOENCODING", "utf-8")
|
||||
.stdin(Stdio::piped())
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::inherit())
|
||||
.output();
|
||||
.spawn()
|
||||
.and_then(|mut child| {
|
||||
use std::io::Write;
|
||||
child
|
||||
.stdin
|
||||
.as_mut()
|
||||
.expect("piped stdin")
|
||||
.write_all(script.as_bytes())?;
|
||||
child.wait_with_output()
|
||||
});
|
||||
|
||||
match out {
|
||||
Err(err) => {
|
||||
|
@ -580,7 +591,7 @@ fn run_python_script(interpreter: &Path, script: &str) -> Result<String> {
|
|||
);
|
||||
}
|
||||
}
|
||||
Ok(ok) if !ok.status.success() => bail!("Python script failed: {}"),
|
||||
Ok(ok) if !ok.status.success() => bail!("Python script failed"),
|
||||
Ok(ok) => Ok(String::from_utf8(ok.stdout)?),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue