diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 988a24b..3aba03b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -26,14 +26,21 @@ jobs: matrix: settings: - host: macos-latest + name: darwin-x64 target: x86_64-apple-darwin build: | - yarn build + yarn build --target x86_64-apple-darwin strip -x *.node - host: windows-latest + name: win32-x64-msvc build: yarn build target: x86_64-pc-windows-msvc + - host: windows-latest + target: i686-pc-windows-msvc + name: win32-ia32-msvc + build: yarn build --target i686-pc-windows-msvc - host: ubuntu-latest + name: linux-x64-gnu target: x86_64-unknown-linux-gnu docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian build: |- @@ -41,21 +48,44 @@ jobs: yarn build --target x86_64-unknown-linux-gnu && strip *.node - host: ubuntu-latest + name: linux-x64-musl target: x86_64-unknown-linux-musl docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine build: set -e && yarn build && strip *.node + - host: ubuntu-latest + target: aarch64-unknown-linux-gnu + name: linux-arm64-gnu + docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 + build: |- + set -e && + export JEMALLOC_SYS_WITH_LG_PAGE=16 && export CC_aarch64_unknown_linux_gnu=/usr/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc && + rustup target add aarch64-unknown-linux-gnu && + yarn build --target aarch64-unknown-linux-gnu && + aarch64-unknown-linux-gnu-strip *.node + - host: ubuntu-latest + target: aarch64-unknown-linux-musl + name: linux-arm64-musl + docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine + build: |- + set -e && + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc && + rustup target add aarch64-unknown-linux-musl && + yarn build --target aarch64-unknown-linux-musl && + /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node - host: macos-latest target: aarch64-apple-darwin + name: darwin-arm64 build: | yarn build --target aarch64-apple-darwin strip -x *.node - host: windows-latest + name: win32-arm64-msvc target: aarch64-pc-windows-msvc build: yarn build --target aarch64-pc-windows-msvc name: stable - ${{ matrix.settings.target }} - node@18 runs-on: ${{ matrix.settings.host }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v3 if: ${{ !matrix.settings.docker }} @@ -67,7 +97,7 @@ jobs: uses: dtolnay/rust-toolchain@stable if: ${{ !matrix.settings.docker }} with: - toolchain: stable + toolchain: nightly-2023-12-28 targets: ${{ matrix.settings.target }} - name: Cache cargo uses: actions/cache@v3 @@ -101,7 +131,7 @@ jobs: if: ${{ !matrix.settings.docker }} shell: bash - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: bindings-${{ matrix.settings.target }} path: ${{ env.APP_NAME }}.*.node @@ -114,17 +144,15 @@ jobs: fail-fast: false matrix: settings: - - host: macos-latest - target: x86_64-apple-darwin - host: windows-latest target: x86_64-pc-windows-msvc + name: win32-x64-msvc node: - - '14' - '16' - '18' runs-on: ${{ matrix.settings.host }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v3 with: @@ -134,7 +162,7 @@ jobs: - name: Install dependencies run: yarn install - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: bindings-${{ matrix.settings.target }} path: . @@ -151,12 +179,11 @@ jobs: fail-fast: false matrix: node: - - '14' - '16' - '18' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v3 with: @@ -166,7 +193,7 @@ jobs: - name: Install dependencies run: yarn install - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: bindings-x86_64-unknown-linux-gnu path: . @@ -183,12 +210,11 @@ jobs: fail-fast: false matrix: node: - - '14' - '16' - '18' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v3 with: @@ -200,7 +226,7 @@ jobs: yarn config set supportedArchitectures.libc "musl" yarn install - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: bindings-x86_64-unknown-linux-musl path: . @@ -209,13 +235,86 @@ jobs: shell: bash - name: Test bindings run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-alpine yarn test + test-linux-aarch64-gnu-binding: + name: Test bindings on aarch64-unknown-linux-gnu - node@${{ matrix.node }} + needs: + - build + strategy: + fail-fast: false + matrix: + node: + - '16' + - '18' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: bindings-aarch64-unknown-linux-gnu + path: . + - name: List packages + run: ls -R . + shell: bash + - name: Install dependencies + run: | + yarn config set supportedArchitectures.cpu "arm64" + yarn config set supportedArchitectures.libc "glibc" + yarn install + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: arm64 + - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + - name: Setup and run tests + uses: addnab/docker-run-action@v3 + with: + image: node:${{ matrix.node }}-slim + options: '--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build' + run: | + set -e + yarn test + ls -la + test-linux-aarch64-musl-binding: + name: Test bindings on aarch64-unknown-linux-musl - node@lts + needs: + - build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: bindings-aarch64-unknown-linux-musl + path: . + - name: List packages + run: ls -R . + shell: bash + - name: Install dependencies + run: | + yarn config set supportedArchitectures.cpu "arm64" + yarn config set supportedArchitectures.libc "musl" + yarn install + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: arm64 + - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + - name: Setup and run tests + uses: addnab/docker-run-action@v3 + with: + image: node:lts-alpine + options: '--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build' + run: | + set -e + yarn test universal-macOS: name: Build universal macOS binary needs: - build runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v3 with: @@ -225,19 +324,19 @@ jobs: - name: Install dependencies run: yarn install - name: Download macOS x64 artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: bindings-x86_64-apple-darwin path: artifacts - name: Download macOS arm64 artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: bindings-aarch64-apple-darwin path: artifacts - name: Combine binaries run: yarn universal - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: bindings-universal-apple-darwin path: ${{ env.APP_NAME }}.*.node @@ -249,9 +348,11 @@ jobs: - test-macOS-windows-binding - test-linux-x64-gnu-binding - test-linux-x64-musl-binding + - test-linux-aarch64-musl-binding + - test-linux-aarch64-gnu-binding - universal-macOS steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v3 with: @@ -261,7 +362,7 @@ jobs: - name: Install dependencies run: yarn install - name: Download all artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: path: artifacts - name: Move artifacts diff --git a/__test__/index.spec.mjs b/__test__/index.spec.mjs index 1a95748..283acd6 100644 --- a/__test__/index.spec.mjs +++ b/__test__/index.spec.mjs @@ -3,7 +3,7 @@ import test from 'ava' import { getCssModulesLocalIdent } from '../index.js' test('template [hash]', (t) => { - t.is(getCssModulesLocalIdent('src/pages/index.module.css', 'test' ,'[hash]'), '_58deea1c54f94c19c993'); + t.is(getCssModulesLocalIdent('src/pages/index.module.css', 'test' ,'[hash]'), 'c25864290c9e89ea1553'); }) test('template [path][name][ext]__[local]', (t) => { t.is(getCssModulesLocalIdent('src/pages/index.module.css', 'test' ,'[path][name][ext]__[local]'), 'src-pages-index-module-css__test'); diff --git a/npm/linux-arm64-gnu/README.md b/npm/linux-arm64-gnu/README.md new file mode 100644 index 0000000..3c72c9a --- /dev/null +++ b/npm/linux-arm64-gnu/README.md @@ -0,0 +1,3 @@ +# `@ice/css-modules-hash-linux-arm64-gnu` + +This is the **aarch64-unknown-linux-gnu** binary for `@ice/css-modules-hash` diff --git a/npm/linux-arm64-gnu/package.json b/npm/linux-arm64-gnu/package.json new file mode 100644 index 0000000..01d817c --- /dev/null +++ b/npm/linux-arm64-gnu/package.json @@ -0,0 +1,24 @@ +{ + "name": "@ice/css-modules-hash-linux-arm64-gnu", + "version": "0.0.6", + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], + "main": "css-modules-hash.linux-arm64-gnu.node", + "files": [ + "css-modules-hash.linux-arm64-gnu.node" + ], + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "libc": [ + "glibc" + ], + "repository": { + "url": "https://github.com/ice-lab/icepack" + } +} \ No newline at end of file diff --git a/npm/linux-arm64-musl/README.md b/npm/linux-arm64-musl/README.md new file mode 100644 index 0000000..c264406 --- /dev/null +++ b/npm/linux-arm64-musl/README.md @@ -0,0 +1,3 @@ +# `@ice/css-modules-hash-linux-arm64-musl` + +This is the **aarch64-unknown-linux-musl** binary for `@ice/css-modules-hash` diff --git a/npm/linux-arm64-musl/package.json b/npm/linux-arm64-musl/package.json new file mode 100644 index 0000000..2775835 --- /dev/null +++ b/npm/linux-arm64-musl/package.json @@ -0,0 +1,24 @@ +{ + "name": "@ice/css-modules-hash-linux-arm64-musl", + "version": "0.0.6", + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], + "main": "css-modules-hash.linux-arm64-musl.node", + "files": [ + "css-modules-hash.linux-arm64-musl.node" + ], + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "libc": [ + "musl" + ], + "repository": { + "url": "https://github.com/ice-lab/icepack" + } +} \ No newline at end of file diff --git a/npm/win32-ia32-msvc/README.md b/npm/win32-ia32-msvc/README.md new file mode 100644 index 0000000..dbca5e8 --- /dev/null +++ b/npm/win32-ia32-msvc/README.md @@ -0,0 +1,3 @@ +# `@ice/css-modules-hash-win32-ia32-msvc` + +This is the **i686-pc-windows-msvc** binary for `@ice/css-modules-hash` diff --git a/npm/win32-ia32-msvc/package.json b/npm/win32-ia32-msvc/package.json new file mode 100644 index 0000000..9aebe61 --- /dev/null +++ b/npm/win32-ia32-msvc/package.json @@ -0,0 +1,21 @@ +{ + "name": "@ice/css-modules-hash-win32-ia32-msvc", + "version": "0.0.6", + "os": [ + "win32" + ], + "cpu": [ + "i686" + ], + "main": "css-modules-hash.win32-ia32-msvc.node", + "files": [ + "css-modules-hash.win32-ia32-msvc.node" + ], + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "repository": { + "url": "https://github.com/ice-lab/icepack" + } +} \ No newline at end of file diff --git a/package.json b/package.json index 41a61e0..e851a35 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,10 @@ "aarch64-apple-darwin", "aarch64-pc-windows-msvc", "x86_64-unknown-linux-musl", - "universal-apple-darwin" + "universal-apple-darwin", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "i686-pc-windows-msvc" ] } }, diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..5b494cf --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,5 @@ +[toolchain] +profile = "default" +# Use nightly for better access to the latest Rust features. +# This date is aligned to stable release dates. +channel = "nightly-2023-12-28" # v1.75.0 \ No newline at end of file