diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4b7a3d2..de92687 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -2,22 +2,22 @@ name: CI env: DEBUG: napi:* APP_NAME: webview - MACOSX_DEPLOYMENT_TARGET: '10.13' - CARGO_INCREMENTAL: '1' + MACOSX_DEPLOYMENT_TARGET: "10.13" + CARGO_INCREMENTAL: "1" CARGO_TERM_COLOR: always permissions: contents: write id-token: write -'on': +"on": push: branches: - main tags-ignore: - - '**' + - "**" paths-ignore: - - '**/*.md' + - "**/*.md" - LICENSE - - '**/*.gitignore' + - "**/*.gitignore" - .editorconfig - docs/** pull_request: null @@ -39,57 +39,115 @@ jobs: - host: windows-latest build: bun run build --target i686-pc-windows-msvc target: i686-pc-windows-msvc - # - host: ubuntu-latest - # target: x86_64-unknown-linux-gnu - # docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian - # setup: | - # sudo apt-get update - # sudo apt-get install pkg-config -y - # build: bun run build --target x86_64-unknown-linux-gnu - # - host: ubuntu-latest - # target: x86_64-unknown-linux-musl - # docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine - # setup: | - # sudo apt-get update - # sudo apt-get install pkg-config -y - # build: bun run build --target x86_64-unknown-linux-musl + - host: ubuntu-latest + target: x86_64-unknown-linux-gnu + build: | + sudo apt-get update + sudo apt-get install -y pkg-config libwebkit2gtk-4.1-dev libsoup-3.0-dev libglib2.0-dev libcairo2-dev libpango1.0-dev libatk1.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev + npm install + npm run build -- --target x86_64-unknown-linux-gnu + - host: ubuntu-latest + target: i686-unknown-linux-gnu + build: | + sudo dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install -y gcc-multilib g++-multilib pkg-config libwebkit2gtk-4.1-dev:i386 libsoup-3.0-dev:i386 libglib2.0-dev:i386 libcairo2-dev:i386 libpango1.0-dev:i386 libatk1.0-dev:i386 libgdk-pixbuf2.0-dev:i386 libgtk-3-dev:i386 + rustup target add i686-unknown-linux-gnu + npm install + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig + export RUSTFLAGS="-L /usr/lib/i386-linux-gnu" + npm run build -- --target i686-unknown-linux-gnu + - host: macos-latest target: aarch64-apple-darwin - build: bun run build --target aarch64-apple-darwin - # - host: ubuntu-latest - # target: aarch64-unknown-linux-gnu - # docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 - # setup: | - # sudo apt-get update - # sudo apt-get install pkg-config -y - # build: bun run build --target aarch64-unknown-linux-gnu - # - host: ubuntu-latest - # target: armv7-unknown-linux-gnueabihf - # setup: | - # sudo apt-get update - # sudo apt-get install gcc-arm-linux-gnueabihf -y - # build: | - # bun run build --target armv7-unknown-linux-gnueabihf + build: | + export PKG_CONFIG_ALLOW_CROSS=1 + bun run build --target aarch64-apple-darwin + - host: ubuntu-latest + target: aarch64-unknown-linux-gnu + build: | + set -e + # Add arm64 architecture + sudo dpkg --add-architecture arm64 + sudo apt-get update + # Install cross-compiler toolchain and arm64 deps + sudo apt-get install -y --no-install-recommends \ + gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \ + pkg-config curl ca-certificates \ + libwebkit2gtk-4.1-dev:arm64 \ + libsoup-3.0-dev:arm64 \ + libglib2.0-dev:arm64 \ + libcairo2-dev:arm64 \ + libpango1.0-dev:arm64 \ + libatk1.0-dev:arm64 \ + libgdk-pixbuf2.0-dev:arm64 \ + libgtk-3-dev:arm64 + # Install Node.js 24 + curl -fsSL https://deb.nodesource.com/setup_24.x | sudo bash - + sudo apt-get install -y nodejs + # Verify Node.js version + echo "Node.js version: $(node --version)" + # Update rust and add target + rustup update stable && rustup default stable + rustup target add aarch64-unknown-linux-gnu + npm install + # Configure zig cross-compilation environment + export PKG_CONFIG_ALLOW_CROSS=1 + export CC="zig cc -target aarch64-linux-gnu.2.28" + export CXX="zig c++ -target aarch64-linux-gnu.2.28" + export AR="zig ar" + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=zig + export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig + export RUSTFLAGS="-L /usr/lib/aarch64-linux-gnu" + npm run build -- --target aarch64-unknown-linux-gnu + - host: ubuntu-latest + target: armv7-unknown-linux-gnueabihf + build: | + set -e + # Add armhf architecture + sudo dpkg --add-architecture armhf + sudo apt-get update + # Install cross-compiler toolchain and armhf deps + sudo apt-get install -y --no-install-recommends \ + gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ + pkg-config curl ca-certificates \ + libwebkit2gtk-4.1-dev:armhf \ + libsoup-3.0-dev:armhf \ + libglib2.0-dev:armhf \ + libcairo2-dev:armhf \ + libpango1.0-dev:armhf \ + libatk1.0-dev:armhf \ + libgdk-pixbuf2.0-dev:armhf \ + libgtk-3-dev:armhf + # Install Node.js 24 + curl -fsSL https://deb.nodesource.com/setup_24.x | sudo bash - + sudo apt-get install -y nodejs + # Verify Node.js version + echo "Node.js version: $(node --version)" + # Update rust and add target + rustup update stable && rustup default stable + rustup target add armv7-unknown-linux-gnueabihf + npm install + # Configure zig cross-compilation environment + export PKG_CONFIG_ALLOW_CROSS=1 + export CC="zig cc -target arm-linux-gnueabihf -mcpu=generic+v7a" + export CXX="zig c++ -target arm-linux-gnueabihf -mcpu=generic+v7a" + export AR="zig ar" + export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=zig + export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig + export RUSTFLAGS="-L /usr/lib/arm-linux-gnueabihf" + npm run build -- --target armv7-unknown-linux-gnueabihf - host: ubuntu-latest target: aarch64-linux-android build: bun run build --target aarch64-linux-android - host: ubuntu-latest target: armv7-linux-androideabi build: bun run build --target armv7-linux-androideabi - # - host: ubuntu-latest - # target: aarch64-unknown-linux-musl - # docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine - # setup: | - # sudo apt-get update - # sudo apt-get install pkg-config -y - # build: |- - # set -e && - # rustup target add aarch64-unknown-linux-musl && - # bun run build --target aarch64-unknown-linux-musl - host: windows-latest target: aarch64-pc-windows-msvc build: bun run build --target aarch64-pc-windows-msvc - name: stable - ${{ matrix.settings.target }} - node@18 + name: stable - ${{ matrix.settings.target }} - node@24 runs-on: ${{ matrix.settings.host }} steps: - uses: actions/checkout@v4 @@ -102,7 +160,7 @@ jobs: uses: actions/setup-node@v4 if: ${{ !matrix.settings.docker }} with: - node-version: 20 + node-version: 24 - name: Install uses: dtolnay/rust-toolchain@stable if: ${{ !matrix.settings.docker }} @@ -120,21 +178,22 @@ jobs: target/ key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }} - uses: goto-bus-stop/setup-zig@v2 - if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} + if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' || matrix.settings.target == 'aarch64-unknown-linux-gnu' }} with: version: 0.13.0 - name: Setup toolchain run: ${{ matrix.settings.setup }} - if: ${{ matrix.settings.setup }} + if: ${{ matrix.settings.setup && !matrix.settings.docker }} shell: bash - name: Install dependencies run: bun install + if: ${{ !matrix.settings.docker }} - name: Build in docker uses: addnab/docker-run-action@v3 if: ${{ matrix.settings.docker }} with: image: ${{ matrix.settings.docker }} - options: '--user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build' + options: "--user 0:0 ${{ matrix.settings.docker_platform && format('--platform {0}', matrix.settings.docker_platform) || '' }} -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo-cache/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo-cache/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build" run: ${{ matrix.settings.build }} - name: Build run: ${{ matrix.settings.build }} @@ -207,7 +266,7 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install dependencies run: bun install - name: Download all artifacts diff --git a/package.json b/package.json index be1c25c..fd7771e 100644 --- a/package.json +++ b/package.json @@ -32,13 +32,16 @@ "x86_64-apple-darwin", "aarch64-apple-darwin", "x86_64-unknown-linux-gnu", + "i686-unknown-linux-gnu", + "aarch64-unknown-linux-gnu", + "armv7-unknown-linux-gnueabihf", "aarch64-linux-android", "armv7-linux-androideabi", "x86_64-unknown-freebsd" ] }, "engines": { - "node": ">= 10" + "node": ">= 24" }, "publishConfig": { "registry": "https://registry.npmjs.org/",