Quellcode durchsuchen

fix: windows i686 release build

LongYinan vor 4 Jahren
Ursprung
Commit
50ecdec7c7
5 geänderte Dateien mit 112 neuen und 22 gelöschten Zeilen
  1. 85 18
      .github/workflows/CI.yaml
  2. 4 4
      Cargo.toml
  3. 3 0
      npm/win32-ia32-msvc/README.md
  4. 19 0
      npm/win32-ia32-msvc/package.json
  5. 1 0
      package.json

+ 85 - 18
.github/workflows/CI.yaml

@@ -28,7 +28,7 @@ jobs:
       - uses: actions/checkout@v2
 
       - name: Setup node
-        uses: actions/setup-node@v2-beta
+        uses: actions/setup-node@v2
         with:
           node-version: 14
           check-latest: true
@@ -67,11 +67,6 @@ jobs:
         run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
 
       - name: 'Build'
-        if: matrix.os != 'macos-latest'
-        run: yarn build
-
-      - name: 'Build'
-        if: matrix.os == 'macos-latest'
         run: yarn build
         env:
           MACOSX_DEPLOYMENT_TARGET: '10.13'
@@ -87,6 +82,76 @@ jobs:
           cargo install cargo-cache --no-default-features --features ci-autoclean
           cargo-cache
 
+  build-windows-i686:
+    if: "!contains(github.event.head_commit.message, 'skip ci')"
+    name: stable - windows-i686 - node@10
+    runs-on: windows-latest
+    env:
+      CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 32
+      CARGO_PROFILE_RELEASE_LTO: 'false'
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Install node x86
+        run: |
+          choco install nodejs-lts --x86 -y --force
+          refreshenv
+      - name: Set 32bit NodeJS path
+        run: |
+          echo "C:\\Program Files (x86)\\nodejs" >> $GITHUB_PATH
+        shell: bash
+
+      - name: NodeJS arch
+        run: node -e "console.log(process.arch)"
+
+      - name: Cache NPM dependencies
+        uses: actions/cache@v1
+        with:
+          path: node_modules
+          key: npm-cache-windows-i686-node@lts-${{ hashFiles('yarn.lock') }}
+
+      - name: Install dependencies
+        run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
+
+      - name: Install
+        uses: actions-rs/toolchain@v1
+        with:
+          toolchain: stable
+          profile: minimal
+          override: true
+
+      - name: Install i686 toolchain
+        run: rustup target add i686-pc-windows-msvc
+
+      - name: Generate Cargo.lock
+        uses: actions-rs/cargo@v1
+        with:
+          command: generate-lockfile
+
+      - name: Cache cargo registry
+        uses: actions/cache@v1
+        with:
+          path: ~/.cargo/registry
+          key: stable-windows-i686-node@lts-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Cache cargo index
+        uses: actions/cache@v1
+        with:
+          path: ~/.cargo/git
+          key: stable-windows-i686-node@lts-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Cross build i686
+        run: yarn build --target i686-pc-windows-msvc
+
+      - name: Test binary
+        run: yarn test
+
+      - name: Upload artifact
+        uses: actions/upload-artifact@v2
+        with:
+          name: bindings-win32-i686
+          path: ${{ env.APP_NAME }}.*.node
+
   build-linux-musl:
     if: "!contains(github.event.head_commit.message, 'skip ci')"
     name: stable - linux-musl - node@10
@@ -218,7 +283,7 @@ jobs:
       - uses: actions/checkout@v2
 
       - name: Setup node
-        uses: actions/setup-node@v2-beta
+        uses: actions/setup-node@v2
         with:
           node-version: 14
           check-latest: true
@@ -274,14 +339,14 @@ jobs:
           path: ${{ env.APP_NAME }}.*.node
 
   build-apple-silicon:
-    name: nightly - aarch64-apple-darwin - node@14
+    name: stable - aarch64-apple-darwin - node@14
     runs-on: macos-latest
 
     steps:
       - uses: actions/checkout@v2
 
       - name: Setup node
-        uses: actions/setup-node@v2-beta
+        uses: actions/setup-node@v2
         with:
           node-version: 14
           check-latest: true
@@ -289,7 +354,7 @@ jobs:
       - name: Install
         uses: actions-rs/toolchain@v1
         with:
-          toolchain: nightly
+          toolchain: stable
           profile: minimal
           override: true
 
@@ -305,13 +370,13 @@ jobs:
         uses: actions/cache@v1
         with:
           path: ~/.cargo/registry
-          key: nightly-apple-aarch64-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
+          key: stable-apple-aarch64-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
 
       - name: Cache cargo index
         uses: actions/cache@v1
         with:
           path: ~/.cargo/git
-          key: nightly-apple-aarch64-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
+          key: stable-apple-aarch64-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
 
       - name: Cache NPM dependencies
         uses: actions/cache@v1
@@ -354,13 +419,13 @@ jobs:
         uses: actions/cache@v1
         with:
           path: ~/.cargo/registry
-          key: nightly-apple-aarch64-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
+          key: stable-apple-aarch64-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
 
       - name: Cache cargo index
         uses: actions/cache@v1
         with:
           path: ~/.cargo/git
-          key: nightly-apple-aarch64-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
+          key: stable-apple-aarch64-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
 
       - name: Cache NPM dependencies
         uses: actions/cache@v1
@@ -398,7 +463,7 @@ jobs:
       - uses: actions/checkout@v2
 
       - name: Setup node
-        uses: actions/setup-node@v2-beta
+        uses: actions/setup-node@v2
         with:
           node-version: ${{ matrix.node }}
           check-latest: true
@@ -445,7 +510,7 @@ jobs:
           key: npm-cache-alpine-node@${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
 
       - name: 'Install dependencies'
-        run: yarn install --frozen-lockfile --ignore-scripts --registry https://registry.npmjs.org
+        run: yarn install --frozen-lockfile --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000
 
       - name: Download artifacts
         uses: actions/download-artifact@v2
@@ -477,7 +542,7 @@ jobs:
       - uses: actions/checkout@v2
 
       - name: Setup node
-        uses: actions/setup-node@v2-beta
+        uses: actions/setup-node@v2
         with:
           node-version: ${{ matrix.node }}
           check-latest: true
@@ -517,6 +582,7 @@ jobs:
       - test
       - test-musl
       - test-aarch64
+      - build-windows-i686
       - build-apple-silicon
       - build-linux-arm7
       - build-android-aarch64
@@ -535,6 +601,7 @@ jobs:
       - test
       - test-musl
       - test-aarch64
+      - build-windows-i686
       - build-apple-silicon
       - build-linux-arm7
       - build-android-aarch64
@@ -543,7 +610,7 @@ jobs:
       - uses: actions/checkout@v2
 
       - name: Setup node
-        uses: actions/setup-node@v2-beta
+        uses: actions/setup-node@v2
         with:
           node-version: 14
           check-latest: true

+ 4 - 4
Cargo.toml

@@ -10,8 +10,8 @@ version = "0.1.0"
 crate-type = ["cdylib"]
 
 [dependencies]
-napi = "1.0.0"
-napi-derive = "1.0.0"
+napi = "1"
+napi-derive = "1"
 
 [target.'cfg(all(unix, not(target_env = "musl"), not(target_arch = "aarch64")))'.dependencies]
 jemallocator = {version = "0.3", features = ["disable_initial_exec_tls"]}
@@ -20,7 +20,7 @@ jemallocator = {version = "0.3", features = ["disable_initial_exec_tls"]}
 mimalloc = {version = "0.1"}
 
 [build-dependencies]
-napi-build = "1.0.0"
+napi-build = "1"
 
 [profile.release]
-codegen-units = 1
+lto = true

+ 3 - 0
npm/win32-ia32-msvc/README.md

@@ -0,0 +1,3 @@
+# `@napi-rs/package-template-win32-ia32-msvc`
+
+This is the **i686-pc-windows-msvc** binary for `@napi-rs/package-template`

+ 19 - 0
npm/win32-ia32-msvc/package.json

@@ -0,0 +1,19 @@
+{
+  "name": "@napi-rs/package-template-win32-ia32-msvc",
+  "version": "1.0.0",
+  "os": ["win32"],
+  "cpu": ["ia32"],
+  "main": "package-template.win32-ia32-msvc.node",
+  "files": ["package-template.win32-ia32-msvc.node"],
+  "description": "Template project for writing node package with napi-rs",
+  "keywords": ["napi-rs", "NAPI", "N-API", "Rust", "node-addon", "node-addon-api"],
+  "license": "MIT",
+  "engines": {
+    "node": ">= 10"
+  },
+  "publishConfig": {
+    "registry": "https://registry.npmjs.org/",
+    "access": "public"
+  },
+  "repository": "git@github.com:napi-rs/package-template.git"
+}

+ 1 - 0
package.json

@@ -14,6 +14,7 @@
       "additional": [
         "x86_64-unknown-linux-musl",
         "aarch64-unknown-linux-gnu",
+        "i686-pc-windows-msvc",
         "armv7-unknown-linux-gnueabihf",
         "aarch64-apple-darwin",
         "aarch64-linux-android"