Cache musl setup in GitHub tool-cache.

This commit is contained in:
Fabio Niephaus 2022-03-01 11:45:43 +01:00
parent 66dc2bf069
commit a02f4df8f7
No known key found for this signature in database
GPG Key ID: F21CF5275F31DFD6
3 changed files with 65 additions and 55 deletions

27
dist/index.js generated vendored
View File

@ -134,27 +134,28 @@ const core = __importStar(__nccwpck_require__(2186));
const tc = __importStar(__nccwpck_require__(7784));
const constants_1 = __nccwpck_require__(5105);
const exec_1 = __nccwpck_require__(1514);
const os_1 = __nccwpck_require__(2037);
const path_1 = __nccwpck_require__(1017);
const io_1 = __nccwpck_require__(7436);
const MUSL_NAME = 'x86_64-linux-musl-native';
const MUSL_VERSION = '10.2.1';
function setUpNativeImageMusl() {
return __awaiter(this, void 0, void 0, function* () {
if (!constants_1.IS_LINUX) {
core.warning('musl is only supported on Linux');
return;
}
let toolPath = tc.find(MUSL_NAME, MUSL_VERSION);
if (toolPath) {
core.info(`Found ${MUSL_NAME} ${MUSL_VERSION} in tool-cache @ ${toolPath}`);
}
else {
core.startGroup(`Setting up musl for GraalVM Native Image...`);
const basePath = (0, path_1.join)((0, os_1.homedir)(), '.musl_feature');
yield (0, io_1.mkdirP)(basePath);
const muslName = 'x86_64-linux-musl-native';
const muslDownloadPath = yield tc.downloadTool(`http://more.musl.cc/10/x86_64-linux-musl/${muslName}.tgz`);
yield tc.extractTar(muslDownloadPath, basePath);
const muslPath = (0, path_1.join)(basePath, muslName);
core.addPath((0, path_1.join)(muslPath, 'bin'));
const muslDownloadPath = yield tc.downloadTool(`http://more.musl.cc/10/x86_64-linux-musl/${MUSL_NAME}.tgz`);
const muslExtractPath = yield tc.extractTar(muslDownloadPath);
const muslPath = (0, path_1.join)(muslExtractPath, MUSL_NAME);
const zlibVersion = '1.2.11';
const zlibDownloadPath = yield tc.downloadTool(`https://zlib.net/zlib-${zlibVersion}.tar.gz`);
yield tc.extractTar(zlibDownloadPath, basePath);
const zlibPath = (0, path_1.join)(basePath, `zlib-${zlibVersion}`);
const zlibExtractPath = yield tc.extractTar(zlibDownloadPath);
const zlibPath = (0, path_1.join)(zlibExtractPath, `zlib-${zlibVersion}`);
const zlibBuildOptions = {
cwd: zlibPath,
env: Object.assign(Object.assign({}, process.env), { CC: (0, path_1.join)(muslPath, 'bin', 'gcc') })
@ -162,7 +163,11 @@ function setUpNativeImageMusl() {
yield (0, exec_1.exec)('./configure', [`--prefix=${muslPath}`, '--static'], zlibBuildOptions);
yield (0, exec_1.exec)('make', [], zlibBuildOptions);
yield (0, exec_1.exec)('make', ['install'], { cwd: zlibPath });
core.info(`Adding ${MUSL_NAME} ${MUSL_VERSION} to tool-cache ...`);
toolPath = yield tc.cacheDir(muslPath, MUSL_NAME, MUSL_VERSION);
core.endGroup();
}
core.addPath((0, path_1.join)(toolPath, 'bin'));
});
}
exports.setUpNativeImageMusl = setUpNativeImageMusl;

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -2,33 +2,33 @@ import * as core from '@actions/core'
import * as tc from '@actions/tool-cache'
import {IS_LINUX} from './constants'
import {exec} from '@actions/exec'
import {homedir} from 'os'
import {join} from 'path'
import {mkdirP} from '@actions/io'
const MUSL_NAME = 'x86_64-linux-musl-native'
const MUSL_VERSION = '10.2.1'
export async function setUpNativeImageMusl(): Promise<void> {
if (!IS_LINUX) {
core.warning('musl is only supported on Linux')
return
}
let toolPath = tc.find(MUSL_NAME, MUSL_VERSION)
if (toolPath) {
core.info(`Found ${MUSL_NAME} ${MUSL_VERSION} in tool-cache @ ${toolPath}`)
} else {
core.startGroup(`Setting up musl for GraalVM Native Image...`)
const basePath = join(homedir(), '.musl_feature')
await mkdirP(basePath)
const muslName = 'x86_64-linux-musl-native'
const muslDownloadPath = await tc.downloadTool(
`http://more.musl.cc/10/x86_64-linux-musl/${muslName}.tgz`
`http://more.musl.cc/10/x86_64-linux-musl/${MUSL_NAME}.tgz`
)
await tc.extractTar(muslDownloadPath, basePath)
const muslPath = join(basePath, muslName)
core.addPath(join(muslPath, 'bin'))
const muslExtractPath = await tc.extractTar(muslDownloadPath)
const muslPath = join(muslExtractPath, MUSL_NAME)
const zlibVersion = '1.2.11'
const zlibDownloadPath = await tc.downloadTool(
`https://zlib.net/zlib-${zlibVersion}.tar.gz`
)
await tc.extractTar(zlibDownloadPath, basePath)
const zlibPath = join(basePath, `zlib-${zlibVersion}`)
const zlibExtractPath = await tc.extractTar(zlibDownloadPath)
const zlibPath = join(zlibExtractPath, `zlib-${zlibVersion}`)
const zlibBuildOptions = {
cwd: zlibPath,
env: {
@ -43,5 +43,10 @@ export async function setUpNativeImageMusl(): Promise<void> {
)
await exec('make', [], zlibBuildOptions)
await exec('make', ['install'], {cwd: zlibPath})
core.info(`Adding ${MUSL_NAME} ${MUSL_VERSION} to tool-cache ...`)
toolPath = await tc.cacheDir(muslPath, MUSL_NAME, MUSL_VERSION)
core.endGroup()
}
core.addPath(join(toolPath, 'bin'))
}