If the `host_env` feature is enabled, then enable the `_ctypes` module on the Android platform. by psyche314 · Pull Request #7402 · RustPython/RustPython
🏁 Script executed:
#!/bin/bash # Check if _ctypes module or its submodules have any platform guards that would protect against musl/sgx echo "=== Checking _ctypes module for platform guards ===" rg -n "cfg.*musl|cfg.*sgx" crates/vm/src/stdlib/_ctypes/ echo "" echo "=== Checking top-level imports in _ctypes files ===" rg -n "^use (libffi|libloading)" crates/vm/src/stdlib/_ctypes/
Repository: RustPython/RustPython
Length of output: 454
🏁 Script executed:
#!/bin/bash # Read the mod.rs file to check the cfg conditions echo "=== Reading crates/vm/src/stdlib/mod.rs around lines 41-49 ===" sed -n '35,55p' crates/vm/src/stdlib/mod.rs echo "" echo "=== Checking for second cfg block around lines 91-98 ===" sed -n '85,105p' crates/vm/src/stdlib/mod.rs echo "" echo "=== Full view of cfg conditions for _ctypes ===" rg -B2 -A8 'mod _ctypes' crates/vm/src/stdlib/mod.rs
Repository: RustPython/RustPython
Length of output: 1668
🏁 Script executed:
#!/bin/bash # Check if _ctypes.rs has any top-level cfg guards echo "=== Checking _ctypes.rs for top-level cfg ===" head -20 crates/vm/src/stdlib/_ctypes.rs echo "" echo "=== Check if libffi and libloading are available on musl/sgx ===" # Check if there are any feature flags or conditional compilation for these deps rg -n "libffi|libloading" Cargo.toml | head -20
Repository: RustPython/RustPython
Length of output: 609
🏁 Script executed:
#!/bin/bash # Check for documentation about ctypes feature echo "=== Searching for ctypes in README or docs ===" find . -name "README*" -o -name "Cargo.toml" -o -name "FEATURES*" | head -10 | xargs grep -l "ctypes" 2>/dev/null || echo "No direct ctypes documentation found" echo "" echo "=== Check Cargo.toml for ctypes feature definition ===" rg -A5 '\[features\]' Cargo.toml | grep -A100 "ctypes"
Repository: RustPython/RustPython
Length of output: 294
🏁 Script executed:
#!/bin/bash # Check if there are any comments in mod.rs explaining this design echo "=== Searching for comments around the ctypes cfg condition ===" sed -n '35,55p' crates/vm/src/stdlib/mod.rs | cat -n echo "" echo "=== Check if libloading/libffi have musl support ===" rg -B3 -A3 "libffi|libloading" Cargo.toml
Repository: RustPython/RustPython
Length of output: 1108
🏁 Script executed:
#!/bin/bash # Check if there are any issues or PRs mentioning musl/sgx and ctypes echo "=== Searching for any musl-related comments in stdlib ===" rg -n "musl" crates/vm/src/stdlib/ | head -20 echo "" echo "=== Check if libffi/libloading have documented musl issues ===" # Check the Cargo.lock or dependency versions for any indicators rg -B5 -A5 "libffi.*5\|libloading" Cargo.lock 2>/dev/null | head -30 || echo "Cargo.lock check skipped"
Repository: RustPython/RustPython
Length of output: 1938
🏁 Script executed:
#!/bin/bash # Check if there's any issue or discussion about ctypes and musl in git history or issues echo "=== Check if there's context in _ctypes.rs about musl/sgx ===" grep -n "musl\|sgx\|platform" crates/vm/src/stdlib/_ctypes.rs || echo "No platform mentions in _ctypes.rs" echo "" echo "=== Verify the exact behavior: what happens when ctypes feature is enabled on musl ===" # Check if there's a CI configuration that tests this find . -name "*.yml" -o -name "*.yaml" | xargs grep -l "ctypes\|musl" 2>/dev/null | head -5
Repository: RustPython/RustPython
Length of output: 396
🏁 Script executed:
#!/bin/bash # Check CI configuration for ctypes testing echo "=== Checking CI for ctypes feature tests ===" grep -n "ctypes" .github/workflows/ci.yaml echo "" echo "=== Checking if musl builds are tested ===" grep -n "musl" .github/workflows/ci.yaml | head -20 echo "" echo "=== Check if ctypes and musl are tested together ===" grep -B5 -A5 "ctypes" .github/workflows/ci.yaml | grep -A10 -B10 "musl"
Repository: RustPython/RustPython
Length of output: 282
🏁 Script executed:
#!/bin/bash # Check if there's any documentation or indication of libffi/libloading support on musl echo "=== Check Cargo.toml dependencies for any musl-related features ===" grep -B2 -A2 "libffi\|libloading" Cargo.toml echo "" echo "=== Look for any conditional dependencies based on target_env ===" sed -n '/^\[target\./,/^\[/p' Cargo.toml | grep -A5 "musl" echo "" echo "=== Check if the ctypes feature is explicitly documented anywhere ===" find . -name "*.md" -type f | xargs grep -i "ctypes" 2>/dev/null | head -10
Repository: RustPython/RustPython
Length of output: 716
Document the platform constraints for the ctypes feature.
The feature = "ctypes" flag bypasses platform checks and allows enabling ctypes on musl and SGX targets. Since _ctypes and its submodules unconditionally depend on libffi and libloading (which are not available on these platforms), users who enable --features ctypes on musl or SGX will encounter compile-time errors. This appears intentional—to allow users to opt-in despite platform restrictions—but should be documented in Cargo.toml or the project README so users understand the platform requirements before attempting to enable this feature.