Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ jobs:
target: armv7-unknown-linux-gnueabihf
strip: arm-linux-gnueabihf-strip
build-flags: --use-napi-cross
- os: ubuntu-latest
target: loongarch64-unknown-linux-gnu
strip: loongarch64-linux-gnu-strip
Comment on lines +71 to +72

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 GNU Build Skips Cross Wrapper

When the new loongarch64-unknown-linux-gnu matrix entry reaches build:platform, it runs without the --use-napi-cross flag used by the other Linux GNU cross targets. If napi-rs relies on that wrapper to set cross C toolchain variables, native dependencies can compile for the runner or fail to link, leaving the LoongArch GNU package without a usable binary.

- os: ubuntu-latest
target: aarch64-unknown-linux-musl
strip-zig: true
Expand All @@ -75,6 +78,10 @@ jobs:
target: x86_64-unknown-linux-musl
strip: strip
build-flags: -x
- os: ubuntu-latest
target: loongarch64-unknown-linux-musl
strip-zig: true
build-flags: -x

name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -105,6 +112,20 @@ jobs:
sudo apt-get update
sudo apt-get install binutils-aarch64-linux-gnu -y

- name: Install gcc-loongarch64-linux-gnu
if: ${{ matrix.target == 'loongarch64-unknown-linux-gnu' }}
run: |
sudo apt-get update
sudo apt-get install binutils-loongarch64-linux-gnu gcc-13-loongarch64-linux-gnu -y
sudo update-alternatives \
--install /usr/bin/loongarch64-linux-gnu-gcc loongarch64-linux-gnu-gcc /usr/bin/loongarch64-linux-gnu-gcc-13 100 \
--slave /usr/bin/loongarch64-linux-gnu-gcc-ar loongarch64-linux-gnu-gcc-ar /usr/bin/loongarch64-linux-gnu-gcc-ar-13 \
--slave /usr/bin/loongarch64-linux-gnu-gcc-nm loongarch64-linux-gnu-gcc-nm /usr/bin/loongarch64-linux-gnu-gcc-nm-13 \
--slave /usr/bin/loongarch64-linux-gnu-gcc-ranlib loongarch64-linux-gnu-gcc-ranlib /usr/bin/loongarch64-linux-gnu-gcc-ranlib-13 \
--slave /usr/bin/loongarch64-linux-gnu-gcov loongarch64-linux-gnu-gcov /usr/bin/loongarch64-linux-gnu-gcov-13
sudo update-alternatives \
--install /usr/bin/loongarch64-linux-gnu-cpp loongarch64-linux-gnu-cpp /usr/bin/loongarch64-linux-gnu-cpp-13 100

- uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2
if: ${{ contains(matrix.target, 'musl') }}
with:
Expand Down Expand Up @@ -274,6 +295,8 @@ jobs:
cp bindings-aarch64-unknown-linux-gnu/* ./npm/linux-arm64-gnu/
cp bindings-aarch64-unknown-linux-musl/* ./npm/linux-arm64-musl/
cp bindings-armv7-unknown-linux-gnueabihf/* ./npm/linux-arm-gnueabihf/
cp bindings-loongarch64-unknown-linux-gnu/* ./npm/linux-loong64-gnu/
cp bindings-loongarch64-unknown-linux-musl/* ./npm/linux-loong64-musl/
cp bindings-x86_64-unknown-linux-gnu/* ./npm/linux-x64-gnu/
cp bindings-x86_64-unknown-linux-musl/* ./npm/linux-x64-musl/
cp bindings-x86_64-unknown-freebsd/* ./npm/freebsd-x64/
Expand Down
5 changes: 5 additions & 0 deletions crates/node/.cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ linker = "aarch64-linux-musl-gcc"
rustflags = ["-C", "target-feature=-crt-static"]
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
[target.loongarch64-unknown-linux-gnu]
linker = "loongarch64-linux-gnu-gcc"
[target.loongarch64-unknown-linux-musl]
linker = "loongarch64-linux-musl-gcc"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Musl Linker Is Missing

The new musl target tells Cargo to use loongarch64-linux-musl-gcc, but the release workflow only installs the GNU LoongArch compiler and relies on Zig for musl builds. Any build path that honors this linker setting will fail before producing @tailwindcss/oxide-linux-loong64-musl because that executable is not installed.

rustflags = ["-C", "target-feature=-crt-static"]
# Statically link Visual Studio redistributables on Windows builds
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]
Expand Down
3 changes: 3 additions & 0 deletions crates/node/npm/linux-loong64-gnu/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# `@tailwindcss/oxide-linux-loong64-gnu`

This is the **loongarch64-unknown-linux-gnu** binary for `@tailwindcss/oxide`
30 changes: 30 additions & 0 deletions crates/node/npm/linux-loong64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "@tailwindcss/oxide-linux-loong64-gnu",
"version": "4.3.2",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
"directory": "crates/node/npm/linux-loong64-gnu"
},
"os": [
"linux"
],
"cpu": [
"loong64"
],
"main": "tailwindcss-oxide.linux-loong64-gnu.node",
"files": [
"tailwindcss-oxide.linux-loong64-gnu.node"
],
"publishConfig": {
"provenance": true,
"access": "public"
},
"license": "MIT",
"engines": {
"node": ">= 20"
},
"libc": [
"glibc"
]
}
3 changes: 3 additions & 0 deletions crates/node/npm/linux-loong64-musl/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# `@tailwindcss/oxide-linux-loong64-musl`

This is the **loongarch64-unknown-linux-musl** binary for `@tailwindcss/oxide`
30 changes: 30 additions & 0 deletions crates/node/npm/linux-loong64-musl/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "@tailwindcss/oxide-linux-loong64-musl",
"version": "4.3.2",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
"directory": "crates/node/npm/linux-loong64-musl"
},
"os": [
"linux"
],
"cpu": [
"loong64"
],
"main": "tailwindcss-oxide.linux-loong64-musl.node",
"files": [
"tailwindcss-oxide.linux-loong64-musl.node"
],
"publishConfig": {
"provenance": true,
"access": "public"
},
"license": "MIT",
"engines": {
"node": ">= 20"
},
"libc": [
"musl"
]
}
4 changes: 4 additions & 0 deletions crates/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"armv7-unknown-linux-gnueabihf",
"loongarch64-unknown-linux-gnu",
"loongarch64-unknown-linux-musl",
"x86_64-unknown-linux-musl",
"x86_64-unknown-freebsd",
"i686-pc-windows-msvc",
Expand Down Expand Up @@ -66,6 +68,8 @@
"@tailwindcss/oxide-linux-arm-gnueabihf": "workspace:*",
"@tailwindcss/oxide-linux-arm64-gnu": "workspace:*",
"@tailwindcss/oxide-linux-arm64-musl": "workspace:*",
"@tailwindcss/oxide-linux-loong64-gnu": "workspace:*",
"@tailwindcss/oxide-linux-loong64-musl": "workspace:*",
"@tailwindcss/oxide-linux-x64-gnu": "workspace:*",
"@tailwindcss/oxide-linux-x64-musl": "workspace:*",
"@tailwindcss/oxide-wasm32-wasi": "workspace:*",
Expand Down
10 changes: 10 additions & 0 deletions pnpm-lock.yaml

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

2 changes: 2 additions & 0 deletions scripts/version-packages.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ const syncedWorkspaces = new Map([
'crates/node/npm/linux-arm-gnueabihf',
'crates/node/npm/linux-arm64-gnu',
'crates/node/npm/linux-arm64-musl',
'crates/node/npm/linux-loong64-gnu',
'crates/node/npm/linux-loong64-musl',
'crates/node/npm/linux-x64-gnu',
'crates/node/npm/linux-x64-musl',
'crates/node/npm/wasm32-wasi',
Expand Down