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

49
dist/index.js generated vendored
View File

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

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

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