Skip to content

Commit d23eb4a

Browse files
committed
Add sysconfig build vars and fix value types
- Add prefix, exec_prefix, BINDIR to sysconfigdata build_time_vars - Add Py_DEBUG and ABIFLAGS to sysconfigdata - Fix Py_GIL_DISABLED/Py_DEBUG to use int (1/0) instead of bool - Gitignore generated _sysconfig_vars*.json
1 parent 2b08445 commit d23eb4a

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ flamescope.json
2222
extra_tests/snippets/resources
2323
extra_tests/not_impl.py
2424

25+
Lib/_sysconfig_vars*.json
2526
Lib/site-packages/*
2627
!Lib/site-packages/README.txt
2728
Lib/test/data/*

crates/vm/src/stdlib/sysconfig.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@ pub(crate) mod _sysconfig {
1515
.unwrap();
1616
vars.set_item("SOABI", vm.ctx.none(), vm).unwrap();
1717

18-
vars.set_item("Py_GIL_DISABLED", true.to_pyobject(vm), vm)
19-
.unwrap();
20-
vars.set_item("Py_DEBUG", false.to_pyobject(vm), vm)
18+
vars.set_item("Py_GIL_DISABLED", (1).to_pyobject(vm), vm)
2119
.unwrap();
20+
vars.set_item("Py_DEBUG", (0).to_pyobject(vm), vm).unwrap();
2221

2322
vars
2423
}

crates/vm/src/stdlib/sysconfigdata.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ mod _sysconfigdata {
1414
fn module_exec(vm: &VirtualMachine, module: &Py<PyModule>) -> PyResult<()> {
1515
// Set build_time_vars attribute
1616
let build_time_vars = build_time_vars(vm);
17+
18+
// Add runtime-dependent values needed by sysconfig
19+
let paths = &vm.state.config.paths;
20+
build_time_vars.set_item("prefix", paths.prefix.clone().to_pyobject(vm), vm)?;
21+
build_time_vars.set_item("exec_prefix", paths.exec_prefix.clone().to_pyobject(vm), vm)?;
22+
let bindir = format!("{}/bin", &paths.exec_prefix);
23+
build_time_vars.set_item("BINDIR", bindir.to_pyobject(vm), vm)?;
24+
1725
module.set_attr("build_time_vars", build_time_vars, vm)?;
1826

1927
// Ensure the module is registered under the platform-specific name
@@ -43,6 +51,8 @@ mod _sysconfigdata {
4351
"HAVE_GETRANDOM" => 1,
4452
// RustPython has no GIL (like free-threaded Python)
4553
"Py_GIL_DISABLED" => 1,
54+
"Py_DEBUG" => 0,
55+
"ABIFLAGS" => "t",
4656
// Compiler configuration for native extension builds
4757
"CC" => "cc",
4858
"CXX" => "c++",

0 commit comments

Comments
 (0)