mirror of
https://github.com/actions/setup-python.git
synced 2026-01-21 13:48:54 +08:00
Update releases/v1 with changes from master (#67)
* Use ncc instead of saving node_modules * Add branding and correctly point to main file * Cleanup * Update release script * PR Feedback * Update README.md * Update README.md * Update contributors.md * Update description * use node-version instead of version (deprecated) * Update contributors.md * Update README.md * Update README.md * Create yaml-lint-config.yml * Create lint-yaml.yml * Update README.md * Update README.md * Update contributors.md * Update README.md * Update terminology in comments * Spelling & grammar * Consistent file name references * ncc build * Address YAML linting errors * Fix quotes * Bump handlebars from 4.1.2 to 4.5.3 Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.2 to 4.5.3. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.1.2...v4.5.3) Signed-off-by: dependabot[bot] <support@github.com> * Run main workflow on PRs * Match README to action.yml * Update dist/index.js * Update checkout action to v2 * Fix cross-platform build matrix example * output installed version number after setup (#51) * output installed version number after setup * set output for the installed version * Setup python + self hosted runners documentation * Updates to npm packages (#66) * npm package updates * Updates to ncc build * Update action.yml * Update action.yml Co-authored-by: Konrad Pabjan <Konrad.Pabjan@microsoft.com> Co-authored-by: Edward Thomson <ethomson@edwardthomson.com> Co-authored-by: conao3 <conao3@gmail.com> Co-authored-by: Brian Cristante <brcrista@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Rui Chen <chenrui333@gmail.com> Co-authored-by: Madhuri Gummalla <madhurig@github.com> Co-authored-by: Ye-hyoung Kang <keepyourhonor@gmail.com> Co-authored-by: Robin Daumann <26201853+robindaumann@users.noreply.github.com>
This commit is contained in:
parent
c04e17694d
commit
bdd6409dc1
187 changed files with 6120 additions and 15033 deletions
|
|
@ -51,13 +51,13 @@ function binDir(installDir: string): string {
|
|||
// A particular version of PyPy may contain one or more versions of the Python interpreter.
|
||||
// For example, PyPy 7.0 contains Python 2.7, 3.5, and 3.6-alpha.
|
||||
// We only care about the Python version, so we don't use the PyPy version for the tool cache.
|
||||
function usePyPy(majorVersion: 2 | 3, architecture: string): void {
|
||||
function usePyPy(majorVersion: 2 | 3, architecture: string): InstalledVersion {
|
||||
const findPyPy = tc.find.bind(undefined, 'PyPy', majorVersion.toString());
|
||||
let installDir: string | null = findPyPy(architecture);
|
||||
|
||||
if (!installDir && IS_WINDOWS) {
|
||||
// PyPy only precompiles binaries for x86, but the architecture parameter defaults to x64.
|
||||
// On Hosted VS2017, we only install an x86 version.
|
||||
// On our Windows virtual environments, we only install an x86 version.
|
||||
// Fall back to x86.
|
||||
installDir = findPyPy('x86');
|
||||
}
|
||||
|
|
@ -77,12 +77,17 @@ function usePyPy(majorVersion: 2 | 3, architecture: string): void {
|
|||
|
||||
core.addPath(installDir);
|
||||
core.addPath(_binDir);
|
||||
|
||||
const impl = 'pypy' + majorVersion.toString();
|
||||
core.setOutput('python-version', impl);
|
||||
|
||||
return {impl: impl, version: versionFromPath(installDir)};
|
||||
}
|
||||
|
||||
async function useCpythonVersion(
|
||||
version: string,
|
||||
architecture: string
|
||||
): Promise<void> {
|
||||
): Promise<InstalledVersion> {
|
||||
const desugaredVersionSpec = desugarDevVersion(version);
|
||||
const semanticVersionSpec = pythonVersionToSemantic(desugaredVersionSpec);
|
||||
core.debug(`Semantic version spec of ${version} is ${semanticVersionSpec}`);
|
||||
|
|
@ -120,7 +125,7 @@ async function useCpythonVersion(
|
|||
|
||||
if (IS_WINDOWS) {
|
||||
// Add --user directory
|
||||
// `installDir` from tool cache should look like $AGENT_TOOLSDIRECTORY/Python/<semantic version>/x64/
|
||||
// `installDir` from tool cache should look like $RUNNER_TOOL_CACHE/Python/<semantic version>/x64/
|
||||
// So if `findLocalTool` succeeded above, we must have a conformant `installDir`
|
||||
const version = path.basename(path.dirname(installDir));
|
||||
const major = semver.major(version);
|
||||
|
|
@ -135,6 +140,11 @@ async function useCpythonVersion(
|
|||
core.addPath(userScriptsDir);
|
||||
}
|
||||
// On Linux and macOS, pip will create the --user directory and add it to PATH as needed.
|
||||
|
||||
const installed = versionFromPath(installDir);
|
||||
core.setOutput('python-version', installed);
|
||||
|
||||
return {impl: 'CPython', version: installed};
|
||||
}
|
||||
|
||||
/** Convert versions like `3.8-dev` to a version like `>= 3.8.0-a0`. */
|
||||
|
|
@ -147,6 +157,19 @@ function desugarDevVersion(versionSpec: string) {
|
|||
}
|
||||
}
|
||||
|
||||
/** Extracts python version from install path from hosted tool cache as described in README.md */
|
||||
function versionFromPath(installDir: string) {
|
||||
const parts = installDir.split(path.sep);
|
||||
const idx = parts.findIndex(part => part === 'PyPy' || part === 'Python');
|
||||
|
||||
return parts[idx + 1] || '';
|
||||
}
|
||||
|
||||
interface InstalledVersion {
|
||||
impl: string;
|
||||
version: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Python's prelease versions look like `3.7.0b2`.
|
||||
* This is the one part of Python versioning that does not look like semantic versioning, which specifies `3.7.0-b2`.
|
||||
|
|
@ -160,7 +183,7 @@ export function pythonVersionToSemantic(versionSpec: string) {
|
|||
export async function findPythonVersion(
|
||||
version: string,
|
||||
architecture: string
|
||||
): Promise<void> {
|
||||
): Promise<InstalledVersion> {
|
||||
switch (version.toUpperCase()) {
|
||||
case 'PYPY2':
|
||||
return usePyPy(2, architecture);
|
||||
|
|
|
|||
|
|
@ -7,10 +7,11 @@ async function run() {
|
|||
let version = core.getInput('python-version');
|
||||
if (version) {
|
||||
const arch: string = core.getInput('architecture', {required: true});
|
||||
await finder.findPythonVersion(version, arch);
|
||||
const installed = await finder.findPythonVersion(version, arch);
|
||||
core.info(`Successfully setup ${installed.impl} (${installed.version})`);
|
||||
}
|
||||
const matchersPath = path.join(__dirname, '..', '.github');
|
||||
console.log(`##[add-matcher]${path.join(matchersPath, 'python.json')}`);
|
||||
core.info(`##[add-matcher]${path.join(matchersPath, 'python.json')}`);
|
||||
} catch (err) {
|
||||
core.setFailed(err.message);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue