From 5261051d74357be2a01f81f07ee851ce305f6bc3 Mon Sep 17 00:00:00 2001 From: ada Date: Mon, 22 Jun 2026 16:18:06 -0500 Subject: [PATCH] Prep for cpython w/o sysroot Defensively removes sysroot/ prefix from cpython. Closes #291. --- .nanvix/z.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.nanvix/z.py b/.nanvix/z.py index c4dfdf4..d794f41 100644 --- a/.nanvix/z.py +++ b/.nanvix/z.py @@ -845,14 +845,18 @@ def _install_cpython(self, sysroot: Path) -> None: if not member.isfile(): continue + # Tolerate both the legacy layout (entries rooted under + # ``sysroot/``) and the post-nanvix/cpython#742 layout + # where the ``sysroot/`` prefix has been dropped. + name = member.name.removeprefix("sysroot/") + # bin/python.elf → sysroot/bin/python3.12 - if member.name == "bin/python.elf": + if name == "bin/python.elf": member.name = "bin/python3.12" tf.extract(member, path=sysroot, filter="data") - # sysroot/lib/python3.12/* → sysroot/lib/python3.12/* - elif member.name.startswith("sysroot/lib/python3.12/"): - # Strip leading "sysroot/" prefix - member.name = member.name.removeprefix("sysroot/") + # lib/python3.12/* → sysroot/lib/python3.12/* + elif name.startswith("lib/python3.12/"): + member.name = name tf.extract(member, path=sysroot, filter="data") sentinel.write_text(version_specifier)