mirror of
https://github.com/supabase/setup-cli.git
synced 2026-06-27 17:36:57 +00:00
fix: install Alpine runtime dependencies (#434)
## Summary - Install `libstdc++` and `libgcc` before verifying CLI versions from apk archives - Keep non-apk archive installs unchanged - Rebuild the v1 bundled action artifact ## Testing - `npm run package` - `npm run format:check` - `npm run lint` - `npm run test` - Verified `supabase_2.100.0_linux_arm64.apk` fails on plain Alpine without `libstdc++`/`libgcc` and reports `2.100.0` after installing them
This commit is contained in:
24
dist/index.js
generated
vendored
24
dist/index.js
generated
vendored
@@ -60534,6 +60534,29 @@ const getDownloadArchive = async (version, platform = os__default.platform(), ar
|
||||
const getCliPath = (extractedPath, archiveFormat) => {
|
||||
return archiveFormat === 'apk' ? `${extractedPath}/usr/bin` : extractedPath;
|
||||
};
|
||||
const installAlpineRuntimeDependencies = async (archiveFormat) => {
|
||||
if (archiveFormat !== 'apk') {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await doExec('command -v apk');
|
||||
}
|
||||
catch {
|
||||
throw new Error('Linux musl containers need libstdc++ and libgcc to run Supabase CLI. Install them before supabase/setup-cli.');
|
||||
}
|
||||
try {
|
||||
await doExec('apk info -e libstdc++ libgcc');
|
||||
return;
|
||||
}
|
||||
catch {
|
||||
const { stdout } = await doExec('id -u');
|
||||
if (stdout.trim() !== '0') {
|
||||
throw new Error("Alpine/musl containers need libstdc++ and libgcc to run Supabase CLI. Add 'apk add --no-cache libstdc++ libgcc' before supabase/setup-cli, or run this job container as root.");
|
||||
}
|
||||
}
|
||||
// The Supabase CLI shim in the apk dynamically links these Alpine runtime libraries.
|
||||
await doExec('apk add --no-cache libstdc++ libgcc');
|
||||
};
|
||||
const determineInstalledVersion = async () => {
|
||||
const { stdout } = await doExec('supabase --version');
|
||||
const version = stdout.trim();
|
||||
@@ -60562,6 +60585,7 @@ async function run() {
|
||||
? await extractZip(pathToArchive)
|
||||
: await extractTar(pathToArchive);
|
||||
const pathToCLI = getCliPath(extractedPath, download.format);
|
||||
await installAlpineRuntimeDependencies(download.format);
|
||||
// Expose the tool by adding it to the PATH
|
||||
addPath(pathToCLI);
|
||||
// Expose installed tool version
|
||||
|
||||
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@@ -4,7 +4,8 @@ import { gte } from 'semver'
|
||||
import {
|
||||
getDownloadArchive,
|
||||
determineInstalledVersion,
|
||||
getCliPath
|
||||
getCliPath,
|
||||
installAlpineRuntimeDependencies
|
||||
} from './utils.js'
|
||||
|
||||
export const CLI_CONFIG_REGISTRY = 'SUPABASE_INTERNAL_IMAGE_REGISTRY'
|
||||
@@ -37,6 +38,8 @@ export async function run(): Promise<void> {
|
||||
: await tc.extractTar(pathToArchive)
|
||||
const pathToCLI = getCliPath(extractedPath, download.format)
|
||||
|
||||
await installAlpineRuntimeDependencies(download.format)
|
||||
|
||||
// Expose the tool by adding it to the PATH
|
||||
core.addPath(pathToCLI)
|
||||
|
||||
|
||||
31
src/utils.ts
31
src/utils.ts
@@ -157,6 +157,37 @@ export const getCliPath = (
|
||||
return archiveFormat === 'apk' ? `${extractedPath}/usr/bin` : extractedPath
|
||||
}
|
||||
|
||||
export const installAlpineRuntimeDependencies = async (
|
||||
archiveFormat: ArchiveFormat
|
||||
): Promise<void> => {
|
||||
if (archiveFormat !== 'apk') {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
await doExec('command -v apk')
|
||||
} catch {
|
||||
throw new Error(
|
||||
'Linux musl containers need libstdc++ and libgcc to run Supabase CLI. Install them before supabase/setup-cli.'
|
||||
)
|
||||
}
|
||||
|
||||
try {
|
||||
await doExec('apk info -e libstdc++ libgcc')
|
||||
return
|
||||
} catch {
|
||||
const { stdout } = await doExec('id -u')
|
||||
if (stdout.trim() !== '0') {
|
||||
throw new Error(
|
||||
"Alpine/musl containers need libstdc++ and libgcc to run Supabase CLI. Add 'apk add --no-cache libstdc++ libgcc' before supabase/setup-cli, or run this job container as root."
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// The Supabase CLI shim in the apk dynamically links these Alpine runtime libraries.
|
||||
await doExec('apk add --no-cache libstdc++ libgcc')
|
||||
}
|
||||
|
||||
export const getDownloadUrl = async (
|
||||
version: string,
|
||||
githubToken?: string
|
||||
|
||||
Reference in New Issue
Block a user