Skip to content
Closed
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
36 changes: 36 additions & 0 deletions rust-plugins/compress/.cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

[net]
git-fetch-with-cli = true

[build]

rustdocflags = ["--cfg", "docsrs"]
rustflags = ["-Zshare-generics=y"]

[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "target-feature=+sse2", "-Zshare-generics=y"]

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"

[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-musl-gcc"
rustflags = [
"-C",
"target-feature=-crt-static",
"-C",
"link-arg=-lgcc",
"-Zshare-generics=y",
]

[target.x86_64-pc-windows-msvc]
linker = "rust-lld"
rustflags = ["-C", "target-feature=+crt-static", "-Zshare-generics=y"]


[target.aarch64-pc-windows-msvc]
linker = "rust-lld"

[target.armv7-unknown-linux-gnueabi]
linker = "arm-linux-gnueabihf-gcc"
rustflags = ["-C", "target-feature=-crt-static"]
114 changes: 114 additions & 0 deletions rust-plugins/compress/.github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Building Rust Binding And Upload Artifacts
on: workflow_call

jobs:
build:
name: Build and Upload Artifacts - ${{ matrix.settings.abi }}
runs-on: ${{ matrix.settings.os }}
strategy:
fail-fast: false
matrix:
settings:
- os: ubuntu-latest
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
abi: linux-x64-gnu
build: >-
set -e &&
unset CC_x86_64_unknown_linux_gnu &&
unset CC &&
npm run build -- --target x86_64-unknown-linux-gnu --abi linux-x64-gnu
- os: ubuntu-latest
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
abi: linux-x64-musl
build: >-
set -e &&
unset CC_x86_64_unknown_linux_musl &&
unset CC &&
npm run build -- --target x86_64-unknown-linux-musl --abi linux-x64-musl
- os: windows-latest
abi: win32-x64-msvc
- os: macos-13
abi: darwin-x64
- os: macos-latest
abi: darwin-arm64

# cross compile
# windows. Note swc plugins is not supported on ia32 and arm64
- os: windows-latest
abi: win32-ia32-msvc
target: i686-pc-windows-msvc
build: |
export CARGO_PROFILE_RELEASE_LTO=false
cargo install --locked cargo-xwin
npm run build -- --target i686-pc-windows-msvc --abi win32-ia32-msvc --cargo-flags="--no-default-features"
- os: windows-latest
abi: win32-arm64-msvc
target: aarch64-pc-windows-msvc
build: |
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=256
export CARGO_PROFILE_RELEASE_LTO=false
cargo install --locked cargo-xwin
npm run build -- --target aarch64-pc-windows-msvc --abi win32-arm64-msvc --cargo-flags="--no-default-features"
# linux
- os: ubuntu-latest
abi: linux-arm64-musl
target: aarch64-unknown-linux-musl
zig: true
- os: ubuntu-latest
abi: linux-arm64-gnu
target: aarch64-unknown-linux-gnu
zig: true
# - os: ubuntu-latest
# abi: darwin-x64
# target: x86_64-apple-darwin
# osxcross: true
# zig: true
# - os: ubuntu-latest
# abi: darwin-arm64
# target: aarch64-apple-darwin
# osxcross: true
# zig: true
steps:
- uses: actions/checkout@v3
- name: Cache rust artifacts
uses: Swatinem/rust-cache@v2
with:
shared-key: rust-build-${{ matrix.settings.abi }}
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Dependencies
run: npm install -g [email protected] && pnpm i --frozen-lockfile
- run: rustup target add ${{ matrix.settings.target }}
if: ${{ matrix.settings.target }}
# Use the v1 of this action
- uses: mbround18/setup-osxcross@v1
if: ${{ matrix.settings.osxcross }}
# This builds executables & sets env variables for rust to consume.
with:
osx-version: "12.3"
- uses: goto-bus-stop/setup-zig@v2
if: ${{ matrix.settings.zig }}
with:
version: 0.14.0-dev.1983+6bf52b050
- name: Build in docker
uses: addnab/docker-run-action@v3
if: ${{ matrix.settings.docker }}
with:
image: ${{ matrix.settings.docker }}
options: -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build
run: ${{ matrix.settings.build }}
- name: Default Build
if: ${{ !matrix.settings.docker && !matrix.settings.build }}
run: >-
npm run build -- --abi ${{ matrix.settings.abi }} ${{ matrix.settings.target && format('--target {0}', matrix.settings.target) || '' }} ${{ matrix.settings.zig && '--zig' || '' }}
shell: bash
- name: Build
if: ${{ !matrix.settings.docker && matrix.settings.build }}
run: ${{ matrix.settings.build }}
shell: bash
- name: Upload Plugin
uses: actions/upload-artifact@v3
with:
name: ${{ github.sha }}-${{ matrix.settings.abi }}-plugin
path: npm/${{ matrix.settings.abi }}/index.farm
36 changes: 36 additions & 0 deletions rust-plugins/compress/.github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Test Plugin
on:
pull_request:
branches:
- main

jobs:
call-rust-build:
uses: ./.github/workflows/build.yaml

test-artifacts:
name: Test Artifacts
needs: [call-rust-build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# batch download artifacts
- uses: actions/download-artifact@v3
with:
path: /tmp/artifacts
- name: Check Artifacts
run: |
for abi in linux-x64-gnu linux-x64-musl darwin-x64 win32-x64-msvc linux-arm64-musl linux-arm64-gnu darwin-arm64 win32-ia32-msvc win32-arm64-msvc
do
mv /tmp/artifacts/${{ github.sha }}-${abi}-plugin/* ./npm/${abi}

test -f ./npm/${abi}/index.farm
done
- name: Setup Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Install Dependencies
run: npm install -g [email protected]
- name: Test Example
run: cd playground && pnpm i && pnpm build
43 changes: 43 additions & 0 deletions rust-plugins/compress/.github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Publish packages and crates
on:
push:
branches:
- main

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
call-rust-build:
uses: ./.github/workflows/build.yaml

release:
name: Release
needs: [call-rust-build]
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3

- name: Setup Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x

# batch download artifacts
- uses: actions/download-artifact@v3
with:
path: /tmp/artifacts
- name: Move Artifacts
run: |
for abi in linux-x64-gnu linux-x64-musl darwin-x64 win32-x64-msvc linux-arm64-musl linux-arm64-gnu darwin-arm64 win32-ia32-msvc win32-arm64-msvc
do
mv /tmp/artifacts/${{ github.sha }}-${abi}-plugin/* ./npm/${abi}

test -f ./npm/${abi}/index.farm
done

- name: Install Dependencies
run: npm install -g [email protected] && pnpm i --frozen-lockfile

- name: Publish to npm
run: npm set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} && npm publish
Loading
Loading