diff --git a/dist/setup/index.js b/dist/setup/index.js index 41363d8b..b53c01a8 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -82997,6 +82997,30 @@ async function useCpythonVersion(version, architecture, updateEnvironment, check installDir = tc.find('Python', semanticVersionSpec, architecture); } } + if (!installDir) { + // Try system Python as fallback (e.g., on architectures without pre-built binaries) + try { + const { exitCode, stdout } = await exec.getExecOutput('python3', [ + '-c', + 'import sys; print(sys.prefix)' + ]); + if (exitCode === 0) { + const systemPrefix = stdout.trim(); + const systemVersion = await exec.getExecOutput('python3', [ + '-c', + 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}")' + ]); + if (systemVersion.exitCode === 0 && + semver.satisfies(systemVersion.stdout.trim(), semanticVersionSpec)) { + installDir = systemPrefix; + core.warning(`Pre-built Python not available for architecture '${architecture}'. Using system Python ${systemVersion.stdout.trim()} at ${systemPrefix}.`); + } + } + } + catch { + // System Python not available, fall through to error + } + } if (!installDir) { const osInfo = await (0, utils_1.getOSInfo)(); const msg = [ diff --git a/src/find-python.ts b/src/find-python.ts index 99c6a7f2..9e8de0da 100644 --- a/src/find-python.ts +++ b/src/find-python.ts @@ -122,6 +122,34 @@ export async function useCpythonVersion( } } + if (!installDir) { + // Try system Python as fallback (e.g., on architectures without pre-built binaries) + try { + const {exitCode, stdout} = await exec.getExecOutput('python3', [ + '-c', + 'import sys; print(sys.prefix)' + ]); + if (exitCode === 0) { + const systemPrefix = stdout.trim(); + const systemVersion = await exec.getExecOutput('python3', [ + '-c', + 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}")' + ]); + if ( + systemVersion.exitCode === 0 && + semver.satisfies(systemVersion.stdout.trim(), semanticVersionSpec) + ) { + installDir = systemPrefix; + core.warning( + `Pre-built Python not available for architecture '${architecture}'. Using system Python ${systemVersion.stdout.trim()} at ${systemPrefix}.` + ); + } + } + } catch { + // System Python not available, fall through to error + } + } + if (!installDir) { const osInfo = await getOSInfo(); const msg = [