diff --git a/.github/actions/install-llvm/dist/index.js b/.github/actions/install-llvm/dist/index.js index e4bed06b3..485afc5fd 100644 --- a/.github/actions/install-llvm/dist/index.js +++ b/.github/actions/install-llvm/dist/index.js @@ -1189,20 +1189,41 @@ async function execute(cmd) { core.addPath(`${llvmPath}/bin`) } else if(isWindows) { const downloadUrl = "https://github.com/mun-lang/llvm-package-windows/releases/download/v8.0.1/llvm-8.0.1-windows-x64-msvc16.7z" - core.info(`downloading LLVM from '${downloadUrl}'`) + core.info(`Downloading LLVM from '${downloadUrl}'`) const downloadLocation = await tc.downloadTool(downloadUrl); - core.info("succesfully downloaded llvm release, extracting...") + core.info("Succesfully downloaded LLVM release, extracting...") + const llvmPath = path.resolve("llvm"); const _7zPath = path.join(__dirname, '..', 'externals', '7zr.exe'); - const llvmPath = await tc.extract7z(downloadLocation, null, _7zPath) + let attempt = 1; + while(true) { + const args = [ + "x", // extract + downloadLocation, + `-o${llvmPath}` + ] + const exit = await exec.exec(_7zPath, args); + if(exit === 2 && attempt <= 4) { + attempt += 1; + console.error(`Error extracting LLVM release, retrying attempt #${attempt} after 1s..`) + await new Promise(resolve => setTimeout(resolve, 1000)); + } + else if (exit !== 0) { + throw new Error("Could not extract LLVM and Clang binaries."); + } + else { + core.info("Succesfully extracted LLVM release") + break; + } + } - core.info("succesfully extracted llvm release") core.addPath(`${llvmPath}/bin`) core.exportVariable('LIBCLANG_PATH', `${llvmPath}/bin`) } else { core.setFailed(`unsupported platform '${process.platform}'`) } } catch(error) { + console.error(error.stack); core.setFailed(error.message); } })(); diff --git a/.github/actions/install-llvm/index.js b/.github/actions/install-llvm/index.js index f793316e3..475ef0e06 100644 --- a/.github/actions/install-llvm/index.js +++ b/.github/actions/install-llvm/index.js @@ -37,20 +37,41 @@ export async function execute(cmd) { core.addPath(`${llvmPath}/bin`) } else if(isWindows) { const downloadUrl = "https://github.com/mun-lang/llvm-package-windows/releases/download/v8.0.1/llvm-8.0.1-windows-x64-msvc16.7z" - core.info(`downloading LLVM from '${downloadUrl}'`) + core.info(`Downloading LLVM from '${downloadUrl}'`) const downloadLocation = await tc.downloadTool(downloadUrl); - core.info("succesfully downloaded llvm release, extracting...") + core.info("Succesfully downloaded LLVM release, extracting...") + const llvmPath = path.resolve("llvm"); const _7zPath = path.join(__dirname, '..', 'externals', '7zr.exe'); - const llvmPath = await tc.extract7z(downloadLocation, null, _7zPath) + let attempt = 1; + while(true) { + const args = [ + "x", // extract + downloadLocation, + `-o${llvmPath}` + ] + const exit = await exec.exec(_7zPath, args); + if(exit === 2 && attempt <= 4) { + attempt += 1; + console.error(`Error extracting LLVM release, retrying attempt #${attempt} after 1s..`) + await new Promise(resolve => setTimeout(resolve, 1000)); + } + else if (exit !== 0) { + throw new Error("Could not extract LLVM and Clang binaries."); + } + else { + core.info("Succesfully extracted LLVM release") + break; + } + } - core.info("succesfully extracted llvm release") core.addPath(`${llvmPath}/bin`) core.exportVariable('LIBCLANG_PATH', `${llvmPath}/bin`) } else { core.setFailed(`unsupported platform '${process.platform}'`) } } catch(error) { + console.error(error.stack); core.setFailed(error.message); } })();