Install Go wrapper script if necessary
This commit is contained in:
parent
3c15d2383b
commit
2bd75f528c
3 changed files with 64 additions and 1 deletions
26
lib/init-action.js
generated
26
lib/init-action.js
generated
|
|
@ -23,8 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs = __importStar(require("fs"));
|
||||
const path = __importStar(require("path"));
|
||||
const core = __importStar(require("@actions/core"));
|
||||
const safe_which_1 = require("@chrisgavin/safe-which");
|
||||
const uuid_1 = require("uuid");
|
||||
const actions_util_1 = require("./actions-util");
|
||||
const api_client_1 = require("./api-client");
|
||||
|
|
@ -165,6 +167,30 @@ async function run() {
|
|||
core.exportVariable("GOFLAGS", goFlags);
|
||||
core.warning("Passing the GOFLAGS env parameter to the init action is deprecated. Please move this to the analyze action.");
|
||||
}
|
||||
// https://github.com/github/codeql-team/issues/2411
|
||||
if (config.languages.includes(languages_1.Language.go) &&
|
||||
process.platform === "linux") {
|
||||
try {
|
||||
const goBinaryPath = await (0, safe_which_1.safeWhich)("go");
|
||||
const fileOutput = await (0, actions_util_1.getFileType)(goBinaryPath);
|
||||
if (fileOutput.includes("statically linked")) {
|
||||
// Create a directory that we can add to the system PATH.
|
||||
const tempBinPath = path.resolve((0, actions_util_1.getTemporaryDirectory)(), "bin");
|
||||
fs.mkdirSync(tempBinPath, { recursive: true });
|
||||
core.addPath(tempBinPath);
|
||||
// Write the wrapper script to the directory we just added to the PATH.
|
||||
const goWrapperPath = path.resolve(tempBinPath, "go");
|
||||
fs.writeFileSync(goWrapperPath, `#!/bin/bash\n\nexec ${goBinaryPath} "$@"`);
|
||||
fs.chmodSync(goWrapperPath, "755");
|
||||
// Store the original location of our wrapper script somewhere where we can
|
||||
// later retrieve it from and cross-check that it hasn't been changed.
|
||||
core.exportVariable(environment_1.EnvVar.GO_BINARY_LOCATION, goWrapperPath);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
core.warning(`Analyzing Go on Linux, but failed to install wrapper script: ${e}`);
|
||||
}
|
||||
}
|
||||
// Limit RAM and threads for extractors. When running extractors, the CodeQL CLI obeys the
|
||||
// CODEQL_RAM and CODEQL_THREADS environment variables to decide how much RAM and how many
|
||||
// threads it would ask extractors to use. See help text for the "--ram" and "--threads"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue