Skip to content

Commit

Permalink
Revert "Upgrade musl and follow recommendation."
Browse files Browse the repository at this point in the history
This reverts commit 9dd2b41.
  • Loading branch information
fniephaus committed Nov 13, 2024
1 parent 557ffcf commit a8c0509
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 63 deletions.
39 changes: 13 additions & 26 deletions dist/main/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 15 additions & 37 deletions src/features/musl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,9 @@ import * as core from '@actions/core'
import * as tc from '@actions/tool-cache'
import {exec} from '../utils'
import {join} from 'path'
import {homedir} from 'os'
import {promises as fs} from 'fs'

const MUSL_NAME = 'musl-gcc'
const MUSL_VERSION = '1.2.4'
const ZLIB_VERSION = '1.2.13'

// Build instructions: https://github.com/oracle/graal/blob/6dab549194b85252f88bda4ee825762d8b02c687/docs/reference-manual/native-image/guides/build-static-and-mostly-static-executable.md?plain=1#L38-L67
const MUSL_NAME = 'x86_64-linux-musl-native'
const MUSL_VERSION = '10.2.1'

export async function setUpNativeImageMusl(): Promise<void> {
if (!c.IS_LINUX) {
Expand All @@ -19,55 +14,38 @@ export async function setUpNativeImageMusl(): Promise<void> {
}
let toolPath = tc.find(MUSL_NAME, MUSL_VERSION)
if (toolPath) {
core.info(`Found musl ${MUSL_VERSION} in tool-cache @ ${toolPath}`)
core.info(`Found ${MUSL_NAME} ${MUSL_VERSION} in tool-cache @ ${toolPath}`)
} else {
core.startGroup(`Building musl with zlib for GraalVM Native Image...`)
// Build musl
const muslHome = join(homedir(), 'musl-toolchain')
core.startGroup(`Setting up musl for GraalVM Native Image...`)
const muslDownloadPath = await tc.downloadTool(
`https://musl.libc.org/releases/musl-${MUSL_VERSION}.tar.gz`
`https://github.com/graalvm/setup-graalvm/releases/download/x86_64-linux-musl-${MUSL_VERSION}/${MUSL_NAME}.tgz`
)
const muslExtractPath = await tc.extractTar(muslDownloadPath)
const muslPath = join(muslExtractPath, `musl-${MUSL_VERSION}`)
const muslBuildOptions = {cwd: muslPath}
await exec(
'./configure',
[`--prefix=${muslHome}`, '--static'],
muslBuildOptions
)
await exec('make', [], muslBuildOptions)
await exec('make', ['install'], muslBuildOptions)
const muslGCC = join(muslHome, 'bin', MUSL_NAME)
await fs.symlink(
muslGCC,
join(muslHome, 'bin', 'x86_64-linux-musl-gcc'),
'file'
)
// Build zlib
const muslPath = join(muslExtractPath, MUSL_NAME)

const zlibCommit = 'ec3df00224d4b396e2ac6586ab5d25f673caa4c2'
const zlibDownloadPath = await tc.downloadTool(
`https://zlib.net/fossils/zlib-${ZLIB_VERSION}.tar.gz`
`https://github.com/madler/zlib/archive/${zlibCommit}.tar.gz`
)
const zlibExtractPath = await tc.extractTar(zlibDownloadPath)
const zlibPath = join(zlibExtractPath, `zlib-${ZLIB_VERSION}`)
const zlibPath = join(zlibExtractPath, `zlib-${zlibCommit}`)
const zlibBuildOptions = {
cwd: zlibPath,
env: {
...process.env,
CC: muslGCC
CC: join(muslPath, 'bin', 'gcc')
}
}
await exec(
'./configure',
[`--prefix=${muslHome}`, '--static'],
[`--prefix=${muslPath}`, '--static'],
zlibBuildOptions
)
await exec('make', [], zlibBuildOptions)
await exec('make', ['install'], {cwd: zlibPath})
// Store in cache
core.info(
`Adding musl ${MUSL_VERSION} with zlib ${ZLIB_VERSION} to tool-cache ...`
)
toolPath = await tc.cacheDir(muslHome, MUSL_NAME, MUSL_VERSION)

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'))
Expand Down

0 comments on commit a8c0509

Please sign in to comment.