From 20c52ceaa54a9e58831e61ac3f47b643c6537854 Mon Sep 17 00:00:00 2001 From: Mehul Kar Date: Tue, 6 Feb 2024 22:06:37 -0600 Subject: [PATCH 1/6] feat(@turbo/repository): build library for linux musl --- .github/workflows/turborepo-library-release.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/turborepo-library-release.yml b/.github/workflows/turborepo-library-release.yml index 41df8e359dc0e..734253f569db1 100644 --- a/.github/workflows/turborepo-library-release.yml +++ b/.github/workflows/turborepo-library-release.yml @@ -25,6 +25,11 @@ jobs: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV + - host: ubuntu-latest + target: "x86_64-unknown-linux-musl" + install: | + apt-get update + apt-get install -y curl musl-tools - host: ubuntu-latest target: "x86_64-unknown-linux-gnu" container: amazon/aws-lambda-nodejs:18 From 055889dd37c2150bbeea3a7f31df67373db09268 Mon Sep 17 00:00:00 2001 From: Mehul Kar Date: Tue, 6 Feb 2024 22:09:06 -0600 Subject: [PATCH 2/6] add npm setup --- .github/workflows/turborepo-library-release.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/turborepo-library-release.yml b/.github/workflows/turborepo-library-release.yml index 734253f569db1..64cde1d8c942a 100644 --- a/.github/workflows/turborepo-library-release.yml +++ b/.github/workflows/turborepo-library-release.yml @@ -25,11 +25,6 @@ jobs: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - - host: ubuntu-latest - target: "x86_64-unknown-linux-musl" - install: | - apt-get update - apt-get install -y curl musl-tools - host: ubuntu-latest target: "x86_64-unknown-linux-gnu" container: amazon/aws-lambda-nodejs:18 @@ -39,6 +34,14 @@ jobs: npm i -g pnpm@8.9.0 setup: | pnpm install + - host: ubuntu-latest + target: "x86_64-unknown-linux-musl" + install: | + apt-get update + apt-get install -y curl musl-tools + npm i -g pnpm@8.9.0 + setup: | + pnpm install - host: windows-latest target: "aarch64-pc-windows-msvc" - host: windows-latest From d9389d1d42052edcf4867df90603dd4b0c72c378 Mon Sep 17 00:00:00 2001 From: Mehul Kar Date: Tue, 6 Feb 2024 22:18:03 -0600 Subject: [PATCH 3/6] x86 too? --- .github/workflows/turborepo-library-release.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/turborepo-library-release.yml b/.github/workflows/turborepo-library-release.yml index 64cde1d8c942a..641082b9ca433 100644 --- a/.github/workflows/turborepo-library-release.yml +++ b/.github/workflows/turborepo-library-release.yml @@ -34,6 +34,14 @@ jobs: npm i -g pnpm@8.9.0 setup: | pnpm install + - host: ubuntu-latest + target: "aarch64-unknown-linux-musl" + install: | + apt-get update + apt-get install -y curl musl-tools + npm i -g pnpm@8.9.0 + setup: | + pnpm install - host: ubuntu-latest target: "x86_64-unknown-linux-musl" install: | From a9bc2f4b80f22b71bd933e90461c40021374dd58 Mon Sep 17 00:00:00 2001 From: Mehul Kar Date: Tue, 6 Feb 2024 22:23:42 -0600 Subject: [PATCH 4/6] allow musl loading --- packages/turbo-repository/js/index.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/turbo-repository/js/index.js b/packages/turbo-repository/js/index.js index 8cd6441dd1c90..42843a3c341b4 100644 --- a/packages/turbo-repository/js/index.js +++ b/packages/turbo-repository/js/index.js @@ -85,20 +85,18 @@ switch (platform) { } break; case "linux": - if (isMusl()) { - throw new Error("musl not yet supported"); - } else { - switch (arch) { - case "x64": - suffix = "linux-x64-gnu"; - break; - case "arm64": - suffix = "linux-arm64-gnu"; - break; - default: - throw new Error(`Unsupported architecture on Linux: ${arch}`); - } + const isMusl = isMusl(); + switch (arch) { + case "x64": + suffix = isMusl ? "linux-x64-musl" : "linux-x64-gnu"; + break; + case "arm64": + suffix = isMusl ? "linux-arm64-musl" : "linux-arm64-gnu"; + break; + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`); } + break; default: throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`); From 979c92e977c424ba5763492530ae1baf8324f899 Mon Sep 17 00:00:00 2001 From: Mehul Kar Date: Tue, 6 Feb 2024 22:24:59 -0600 Subject: [PATCH 5/6] the rest of the owl? --- .github/workflows/turborepo-library-release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/turborepo-library-release.yml b/.github/workflows/turborepo-library-release.yml index 641082b9ca433..a1dd1b8e4a8dc 100644 --- a/.github/workflows/turborepo-library-release.yml +++ b/.github/workflows/turborepo-library-release.yml @@ -121,6 +121,8 @@ jobs: mv native-packages/turbo-library-x86_64-apple-darwin/@turbo/repository.darwin-x64.node packages/turbo-repository/npm/darwin-x64/ mv native-packages/turbo-library-aarch64-unknown-linux-gnu/@turbo/repository.linux-arm64-gnu.node packages/turbo-repository/npm/linux-arm64-gnu/ mv native-packages/turbo-library-x86_64-unknown-linux-gnu/@turbo/repository.linux-x64-gnu.node packages/turbo-repository/npm/linux-x64-gnu/ + mv native-packages/turbo-library-aarch64-unknown-linux-musl/@turbo/repository.linux-arm64-musl.node packages/turbo-repository/npm/linux-arm64-musl/ + mv native-packages/turbo-library-x86_64-unknown-linux-musl/@turbo/repository.linux-x64-musl.node packages/turbo-repository/npm/linux-x64-musl/ mv native-packages/turbo-library-aarch64-pc-windows-msvc/@turbo/repository.win32-arm64-msvc.node packages/turbo-repository/npm/win32-arm64-msvc/ mv native-packages/turbo-library-x86_64-pc-windows-msvc/@turbo/repository.win32-x64-msvc.node packages/turbo-repository/npm/win32-x64-msvc/ @@ -136,6 +138,8 @@ jobs: npm pack packages/turbo-repository/npm/darwin-x64 npm pack packages/turbo-repository/npm/linux-arm64-gnu npm pack packages/turbo-repository/npm/linux-x64-gnu + npm pack packages/turbo-repository/npm/linux-arm64-musl + npm pack packages/turbo-repository/npm/linux-x64-musl npm pack packages/turbo-repository/npm/win32-arm64-msvc npm pack packages/turbo-repository/npm/win32-x64-msvc npm pack packages/turbo-repository/js @@ -160,6 +164,8 @@ jobs: npm publish -ddd --tag ${TAG} --access public turbo-repository-darwin-x64-${VERSION}.tgz npm publish -ddd --tag ${TAG} --access public turbo-repository-linux-arm64-gnu-${VERSION}.tgz npm publish -ddd --tag ${TAG} --access public turbo-repository-linux-x64-gnu-${VERSION}.tgz + npm publish -ddd --tag ${TAG} --access public turbo-repository-linux-arm64-musl-${VERSION}.tgz + npm publish -ddd --tag ${TAG} --access public turbo-repository-linux-x64-musl-${VERSION}.tgz npm publish -ddd --tag ${TAG} --access public turbo-repository-win32-arm64-msvc-${VERSION}.tgz npm publish -ddd --tag ${TAG} --access public turbo-repository-win32-x64-msvc-${VERSION}.tgz npm publish -ddd --tag ${TAG} --access public turbo-repository-${VERSION}.tgz From 3d39f9a461279ca092756d2bcbca165937f9564f Mon Sep 17 00:00:00 2001 From: Mehul Kar Date: Tue, 6 Feb 2024 22:25:50 -0600 Subject: [PATCH 6/6] add npm dirs for musl --- .../npm/linux-arm64-musl/package.json | 26 +++++++++++++++++++ .../npm/linux-x64-musl/package.json | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 packages/turbo-repository/npm/linux-arm64-musl/package.json create mode 100644 packages/turbo-repository/npm/linux-x64-musl/package.json diff --git a/packages/turbo-repository/npm/linux-arm64-musl/package.json b/packages/turbo-repository/npm/linux-arm64-musl/package.json new file mode 100644 index 0000000000000..aaf1b11739dc6 --- /dev/null +++ b/packages/turbo-repository/npm/linux-arm64-musl/package.json @@ -0,0 +1,26 @@ +{ + "name": "@turbo/repository-linux-arm64-musl", + "version": "0.0.1-canary.4", + "repository": { + "type": "git", + "url": "https://github.com/vercel/turbo", + "directory": "packages/turbo-repository/npm/linux-arm64-musl" + }, + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "main": "repository.linux-arm64-musl.node", + "files": [ + "repository.linux-arm64-musl.node" + ], + "license": "MPL-2.0", + "engines": { + "node": ">= 10" + } +} diff --git a/packages/turbo-repository/npm/linux-x64-musl/package.json b/packages/turbo-repository/npm/linux-x64-musl/package.json new file mode 100644 index 0000000000000..99dd091cadefa --- /dev/null +++ b/packages/turbo-repository/npm/linux-x64-musl/package.json @@ -0,0 +1,26 @@ +{ + "name": "@turbo/repository-linux-x64-musl", + "version": "0.0.1-canary.4", + "repository": { + "type": "git", + "url": "https://github.com/vercel/turbo", + "directory": "packages/turbo-repository/npm/linux-x64-musl" + }, + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "main": "repository.linux-x64-musl.node", + "files": [ + "repository.linux-x64-musl.node" + ], + "license": "MPL-2.0", + "engines": { + "node": ">= 10" + } +}