diff --git a/src/gcc/gcc.ts b/src/gcc/gcc.ts index db30ff4a..2d52c7d3 100644 --- a/src/gcc/gcc.ts +++ b/src/gcc/gcc.ts @@ -78,7 +78,7 @@ function getGccPackageInfo(version: string, platform: NodeJS.Platform, arch: str } // eslint-disable-next-line @typescript-eslint/no-unused-vars -export async function setupGcc(version: string, setupDir: string, arch: string) { +export async function setupGcc(version: string, setupDir: string, arch: string, priority: number = 40) { let installationInfo: InstallationInfo | undefined switch (process.platform) { case "win32": { @@ -139,7 +139,7 @@ export async function setupGcc(version: string, setupDir: string, arch: string) } } if (installationInfo !== undefined) { - await activateGcc(version, installationInfo.binDir) + await activateGcc(version, installationInfo.binDir, priority) return installationInfo } return undefined @@ -199,7 +199,7 @@ async function setupChocoMingw(version: string, arch: string): Promise>[] = [] // Setup gcc as the compiler @@ -223,10 +223,10 @@ async function activateGcc(version: string, binDir: string) { if (isUbuntu()) { promises.push( - updateAptAlternatives("cc", `${binDir}/gcc-${majorVersion}`), - updateAptAlternatives("cxx", `${binDir}/g++-${majorVersion}`), - updateAptAlternatives("gcc", `${binDir}/gcc-${majorVersion}`), - updateAptAlternatives("g++", `${binDir}/g++-${majorVersion}`), + updateAptAlternatives("cc", `${binDir}/gcc-${majorVersion}`, priority), + updateAptAlternatives("cxx", `${binDir}/g++-${majorVersion}`, priority), + updateAptAlternatives("gcc", `${binDir}/gcc-${majorVersion}`, priority), + updateAptAlternatives("g++", `${binDir}/g++-${majorVersion}`, priority), ) } } else { @@ -234,10 +234,10 @@ async function activateGcc(version: string, binDir: string) { if (isUbuntu()) { promises.push( - updateAptAlternatives("cc", `${binDir}/gcc-${version}`), - updateAptAlternatives("cxx", `${binDir}/g++-${version}`), - updateAptAlternatives("gcc", `${binDir}/gcc-${version}`), - updateAptAlternatives("g++", `${binDir}/g++-${version}`), + updateAptAlternatives("cc", `${binDir}/gcc-${version}`, priority), + updateAptAlternatives("cxx", `${binDir}/g++-${version}`, priority), + updateAptAlternatives("gcc", `${binDir}/gcc-${version}`, priority), + updateAptAlternatives("g++", `${binDir}/g++-${version}`, priority), ) } } diff --git a/src/llvm/llvm.ts b/src/llvm/llvm.ts index bcf7483e..3924b7ab 100644 --- a/src/llvm/llvm.ts +++ b/src/llvm/llvm.ts @@ -82,8 +82,9 @@ const llvmBinaryDeps = memoize(llvmBinaryDeps_raw, { isPromise: true }) async function setupLLVMDeps_raw(arch: string) { if (process.platform === "linux") { - // using llvm requires ld, an up to date libstdc++, etc. So, install gcc first - await setupGcc(getVersion("gcc", undefined, await ubuntuVersion()), "", arch) + // using llvm requires ld, an up to date libstdc++, etc. So, install gcc first, + // but with a lower priority than the one used by activateLLVM() + await setupGcc(getVersion("gcc", undefined, await ubuntuVersion()), "", arch, 40) } } const setupLLVMDeps = memoize(setupLLVMDeps_raw, { isPromise: true }) @@ -125,9 +126,10 @@ export async function activateLLVM(directory: string) { // } if (isUbuntu()) { + const priority = 60 actPromises.push( - updateAptAlternatives("cc", `${directory}/bin/clang`), - updateAptAlternatives("cxx", `${directory}/bin/clang++`), + updateAptAlternatives("cc", `${directory}/bin/clang`, priority), + updateAptAlternatives("cxx", `${directory}/bin/clang++`, priority), updateAptAlternatives("clang", `${directory}/bin/clang`), updateAptAlternatives("clang++", `${directory}/bin/clang++`), updateAptAlternatives("lld", `${directory}/bin/lld`), diff --git a/src/utils/setup/setupAptPack.ts b/src/utils/setup/setupAptPack.ts index b9b8a42e..33a64bdf 100644 --- a/src/utils/setup/setupAptPack.ts +++ b/src/utils/setup/setupAptPack.ts @@ -219,14 +219,14 @@ export async function addAptKeyViaDownload(name: string, url: string) { return fileName } -export async function updateAptAlternatives(name: string, path: string) { +export async function updateAptAlternatives(name: string, path: string, priority: number = 40) { if (GITHUB_ACTIONS) { - return execRoot("update-alternatives", ["--install", `/usr/bin/${name}`, name, path, "40"]) + return execRoot("update-alternatives", ["--install", `/usr/bin/${name}`, name, path, priority.toString()]) } else { await setupCppInProfile() return appendFile( cpprc_path, - `\nif [ $UID -eq 0 ]; then update-alternatives --install /usr/bin/${name} ${name} ${path} 40; fi\n`, + `\nif [ $UID -eq 0 ]; then update-alternatives --install /usr/bin/${name} ${name} ${path} ${priority}; fi\n`, ) } }