mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-11-04 07:47:09 +00:00 
			
		
		
		
	Create missing pypyX.Y symlinks (#347)
				
					
				
			`pypyX.Y.exe` executables are missing from PyPy archives on Windows before v7.3.9 (X.Y < 3.9) `pypy2.7` symlinks are also missing from macOS/Linux PyPy archives before v7.3.9 relates to #346
This commit is contained in:
		
							
								
								
									
										14
									
								
								.github/workflows/test-pypy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/test-pypy.yml
									
									
									
									
										vendored
									
									
								
							@@ -44,3 +44,17 @@ jobs:
 | 
			
		||||
  
 | 
			
		||||
      - name: Run simple code
 | 
			
		||||
        run: python -c 'import math; print(math.factorial(5))'
 | 
			
		||||
 | 
			
		||||
      - name: Assert PyPy is running
 | 
			
		||||
        run: |
 | 
			
		||||
          import platform
 | 
			
		||||
          assert platform.python_implementation().lower() == "pypy"
 | 
			
		||||
        shell: python
 | 
			
		||||
 | 
			
		||||
      - name: Assert expected binaries (or symlinks) are present
 | 
			
		||||
        run: |
 | 
			
		||||
          EXECUTABLE=${{ matrix.pypy }}
 | 
			
		||||
          EXECUTABLE=${EXECUTABLE/-/}  # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
 | 
			
		||||
          EXECUTABLE=${EXECUTABLE%%-*}  # remove any -* suffixe
 | 
			
		||||
          ${EXECUTABLE} --version
 | 
			
		||||
        shell: bash
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							@@ -10283,11 +10283,14 @@ function createPyPySymlink(pypyBinaryPath, pythonVersion) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        const version = semver.coerce(pythonVersion);
 | 
			
		||||
        const pythonBinaryPostfix = semver.major(version);
 | 
			
		||||
        const pythonMinor = semver.minor(version);
 | 
			
		||||
        const pypyBinaryPostfix = pythonBinaryPostfix === 2 ? '' : '3';
 | 
			
		||||
        const pypyMajorMinorBinaryPostfix = `${pythonBinaryPostfix}.${pythonMinor}`;
 | 
			
		||||
        let binaryExtension = utils_1.IS_WINDOWS ? '.exe' : '';
 | 
			
		||||
        core.info('Creating symlinks...');
 | 
			
		||||
        utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `python${pythonBinaryPostfix}${binaryExtension}`, true);
 | 
			
		||||
        utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `python${binaryExtension}`, true);
 | 
			
		||||
        utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `pypy${pypyMajorMinorBinaryPostfix}${binaryExtension}`, true);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
function installPip(pythonLocation) {
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,9 @@ async function createPyPySymlink(
 | 
			
		||||
) {
 | 
			
		||||
  const version = semver.coerce(pythonVersion)!;
 | 
			
		||||
  const pythonBinaryPostfix = semver.major(version);
 | 
			
		||||
  const pythonMinor = semver.minor(version);
 | 
			
		||||
  const pypyBinaryPostfix = pythonBinaryPostfix === 2 ? '' : '3';
 | 
			
		||||
  const pypyMajorMinorBinaryPostfix = `${pythonBinaryPostfix}.${pythonMinor}`;
 | 
			
		||||
  let binaryExtension = IS_WINDOWS ? '.exe' : '';
 | 
			
		||||
 | 
			
		||||
  core.info('Creating symlinks...');
 | 
			
		||||
@@ -115,6 +117,13 @@ async function createPyPySymlink(
 | 
			
		||||
    `python${binaryExtension}`,
 | 
			
		||||
    true
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  createSymlinkInFolder(
 | 
			
		||||
    pypyBinaryPath,
 | 
			
		||||
    `pypy${pypyBinaryPostfix}${binaryExtension}`,
 | 
			
		||||
    `pypy${pypyMajorMinorBinaryPostfix}${binaryExtension}`,
 | 
			
		||||
    true
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function installPip(pythonLocation: string) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user