Browse Source

Improve OS and architecture detection for pip requirements

Enhances the logic for selecting pip requirements by considering OS and architecture-specific keys, including normalized architecture names. This allows for more precise dependency resolution based on the target environment.
pull/27/head
HellAholic 3 months ago
parent
commit
413dfd540e
  1. 21
      extensions/generators/VirtualPythonEnv.py

21
extensions/generators/VirtualPythonEnv.py

@ -153,7 +153,26 @@ class VirtualPythonEnv:
if hasattr(conanfile, "conan_data") and conanfile.conan_data is not None and data_key in conanfile.conan_data:
pip_requirements_data = conanfile.conan_data[data_key]
for system in (system for system in pip_requirements_data if system in ("any_os", actual_os)):
# Build list of applicable system keys: any_os, OS name, and OS_architecture combinations
actual_arch = str(conanfile.settings.arch) if hasattr(conanfile.settings, "arch") else None
system_keys = ["any_os", actual_os]
# Add architecture-specific keys (e.g., "Windows_x64", "Linux_x86_64")
if actual_arch:
# Map Conan architecture names to common naming conventions
arch_mapping = {
"x86_64": "x64",
"armv8": "arm64",
"armv8_32": "arm",
}
normalized_arch = arch_mapping.get(actual_arch, actual_arch)
system_keys.append(f"{actual_os}_{normalized_arch}")
# Also try with original arch name
if normalized_arch != actual_arch:
system_keys.append(f"{actual_os}_{actual_arch}")
for system in (system for system in pip_requirements_data if system in system_keys):
for package_name, package_desc in pip_requirements_data[system].items():
try:

Loading…
Cancel
Save