Skip to content

Commit bd4504c

Browse files
authored
Merge branch 'master' into master
2 parents 70e91ca + ce7b4a7 commit bd4504c

File tree

7 files changed

+128
-102
lines changed

7 files changed

+128
-102
lines changed

.github/workflows/CI.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: CI
2+
on:
3+
pull_request:
4+
push:
5+
6+
defaults:
7+
run:
8+
shell: bash
9+
10+
jobs:
11+
Build:
12+
if: "!contains(github.event.head_commit.message, '[skip ci]')"
13+
runs-on: ${{ matrix.os }}
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
os:
18+
- ubuntu-20.04
19+
- macos-latest
20+
- windows-latest
21+
node_version:
22+
- 14
23+
node_arch:
24+
- x64
25+
include:
26+
- os: windows-latest
27+
node_version: 14
28+
node_arch: x86
29+
# - os: macos-11.0
30+
# node_version: 15
31+
# node_arch: arm64
32+
steps:
33+
- uses: actions/checkout@v2
34+
35+
- name: Install Node
36+
uses: actions/setup-node@v2
37+
with:
38+
node-version: ${{ matrix.node_version }}
39+
architecture: ${{ matrix.node_arch }}
40+
41+
- name: Install Dependencies and Build
42+
run: npm install
43+
44+
- name: Prebuild
45+
run: npm run prebuild
46+
env:
47+
ARCH: ${{ matrix.node_arch }}
48+
49+
- name: Upload artifacts
50+
uses: actions/upload-artifact@v2
51+
with:
52+
path: ./prebuilds
53+
54+
Skip:
55+
if: contains(github.event.head_commit.message, '[skip ci]')
56+
runs-on: ubuntu-latest
57+
steps:
58+
- name: Skip CI 🚫
59+
run: echo skip ci

.travis.yml

Lines changed: 3 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -75,100 +75,35 @@ jobs:
7575

7676
## PREBUILD STAGE
7777

78-
- stage: prebuild
79-
os: linux
80-
env: ARCHIVE_SUFFIX=-x64
81-
node_js: "14"
82-
script: script/ci/prebuild.sh
83-
8478
- stage: prebuild
8579
os: linux
8680
env: ALPINE_CHROOT=3.10 ARCHIVE_SUFFIX=-x64-musl
8781
sudo: required
88-
script: script/ci/prebuild.sh
82+
script: npm run prebuild
8983

9084
- stage: prebuild
9185
os: linux
9286
node_js: "14"
9387
env: ARCH=arm TRIPLE=arm-linux-gnueabihf GCC=8 ARCHIVE_SUFFIX=-armv7
9488
addons: {apt: {packages: [gcc-8-arm-linux-gnueabihf, g++-8-arm-linux-gnueabihf]}}
95-
script: script/ci/prebuild.sh
89+
script: npm run prebuild
9690

9791
- stage: prebuild
9892
os: linux
9993
node_js: "14"
10094
env: ARCH=arm64 TRIPLE=aarch64-linux-gnu GCC=8 ARCHIVE_SUFFIX=-armv8
10195
addons: {apt: {packages: [gcc-8-aarch64-linux-gnu, g++-8-aarch64-linux-gnu]}}
102-
script: script/ci/prebuild.sh
103-
104-
- stage: prebuild
105-
os: osx
106-
osx_image: xcode10
107-
node_js: "14"
108-
script: script/ci/prebuild.sh
109-
110-
- stage: prebuild
111-
os: windows
112-
node_js: "14"
113-
# https://travis-ci.community/t/build-doesnt-finish-after-completing-tests/288
114-
env: YARN_GPG=no ARCHIVE_SUFFIX=-x64
115-
script: script/ci/prebuild.sh
116-
117-
- stage: prebuild
118-
os: windows
119-
node_js: "14/x86"
120-
# https://travis-ci.community/t/build-doesnt-finish-after-completing-tests/288
121-
env: YARN_GPG=no ARCHIVE_SUFFIX=-x86
122-
script: script/ci/prebuild.sh
123-
124-
## PUBLISH STAGE
125-
126-
- stage: publish
127-
os: linux
128-
node_js: "14"
129-
env: IGNORE_SCRIPTS=true
130-
script: script/ci/package.sh
96+
script: npm run prebuild
13197

13298
fast_finish: true
13399

134100
stages:
135101
- name: test
136102
- name: prebuild
137103
if: tag IS present
138-
- name: publish
139-
if: tag IS present
140104

141105
install:
142106
- travis_retry script/ci/install.sh
143107

144108
script:
145109
- travis_retry script/ci/test.sh
146-
147-
deploy:
148-
# Deploy prebuilds to Github releases.
149-
- provider: releases
150-
draft: false
151-
file: "${TRAVIS_TAG:-latest}-${TRAVIS_OS_NAME}${ARCHIVE_SUFFIX}.tar.gz"
152-
skip_cleanup: true
153-
on:
154-
tags: true
155-
condition: "$TRAVIS_BUILD_STAGE_NAME = Prebuild"
156-
api_key:
157-
# Github API token for @zeromqjs-integration
158-
secure: CvjUt3eRB1J6H9vxx/WrI4jOMX+jjgUSuC3z0r1tEfTKsrkt0Eoovn22tWP45aYeZd0clbV0aIhi3jvkZVAXvQ6y+WPdY9ZsQ1AJtZkVyT3qOdxeybcM0x5NY0q6dnROOwJ8O8Y6FeOrNdEuSImrCrCcPaPv9ZIM9Dv8jto5d5VypFtF5GaZ0nZPRuUgKVXDEKcHVZPgDhgHmjPzVAO0XXdHbgQtUlGYvhQmNhSE5njGFg1lm4+CWkDdpWAiehv0kwtCSx3pn3WtfO4Romt9fk662ykRYDSve0TryR2HBvISqmM64E2NU1VjqGy0nSdyVD7s9gV2hE+FG/N3/n4lYUH3UtaIwjqNmlgQpl/mDz/y5W0nTscigWkzPuk0HqiEHQ0Wk6jZLvw3cUD5YXBgESg0nbBIt+TIaCp2/Z+vENtD3blaXH0n4vXJhRDAlbQ/E7CvIWOUTaSuXfK3ugGoifzc78MyAK0TdYCX+EJoIWe5l+o8TExrWdSp4485dcsex1vOo5Wd7bPIvfsDzfNjmraanoFxUCfU+lrxuQqPN4Ot/MoltThhMJwTZJCdnZsZPYR3oznI7Dn5gLyijpNwLWTlHDsSTcZuronE8WEFHUiNwsVnt29tvp6m6OBin6gZUCXoR78c0DQoyTpS8Nc2zKbK1ps6pelKhs39K1n+d+U=
159-
160-
# Deploy package including all generated prebuilds to NPM.
161-
- provider: npm
162-
email: rolftimmermans+zeromqjs@voormedia.com
163-
skip_cleanup: true
164-
on:
165-
tags: true
166-
condition: "$TRAVIS_BUILD_STAGE_NAME = Publish"
167-
api_key:
168-
# NPM API token for @zeromqjs-integration
169-
secure: 2dWaYpf8DDmfD0zoDLs2QFhE+vNT9vq2UOb6A+SHnsqkxfTh3xkkT0EyKEjAF7vQ03QKI6cYMcz9YVr7pwfoN1xWS1JA78YcZ9aG2+De1HW2tbi0SsDJgMzMv+OejloH9T0Mzth5k45ehRkXjijkBnTGT1j1AdXvTg0+MAOxEO0Q30aMUMBQ4y+0JB9S9UCE6Cs/BWt0mdoKXsb4pL+gJBSbE4wzrkthIkvG8Am6EybztLOjyGlWdvtDQeNe0JwMjeHMlmp/k4auXS+3x+JBcjCqxXxGQnDUHaZ31nFGVx6ns9rmsupe9FzWqOBYBwWRO0G0+Ku17gjluQLvqalib9SEcZiLv+nCpWlHoQNBuAoVz+CoCkfWCp6OUkJ5NpAkQRDSF/7s4A1gzzT7Ne+Ux670PhkvHLJpH4Pt08QqtRsSdjuj566DbYqdEmdW8SwOnRzigs4eVY6m+O6PDD6j4vBzeoE0zIDsCfCEsk6CaErdMQhQOb+wZTL1DRz49YgwUTZym9ekgf/hNrDqMkVuM1RT8L2CUqBHhmqAq6yJ4c11C1O2DEWC4MgIqw7/sfrsFtZlauaU/NyUDf2q6NXnPLISp8M+06ES+eNynyM1w8F+6bBebAe6GN4+DAUlt+VKtREIzxqKRG/2PZ7aYYbt2nlmTa4e/Lp7/MLqoZEOvPw=
170-
171-
env:
172-
global:
173-
# GITHUB_TOKEN=<Github API token for @zeromqjs-integration>
174-
secure: x3reA0+odqmuxZbUfQCbT/bXI4pBC2VDidUyt2kn0BFmEWI5J8dXV0rXM0Ai/iCh5ESm6mIbzAjw1mOBgke6OET9gbZbAdMMqX30abAEBsvBu+z/t/cpXmTEOPCTjBIvJhmJxOZxjyR3iG+lI9L8DdheWt0sS/ucD3w1Qd0eoD8wo2+ynWxdeeC0ZZLdO94UM/1QJMDqsShLQBu9tvhDWgmxjzyENC6vhXKuesLV4lwqZTCw4Kqp4SeWml5R1sY7PZWCj0EoxIskSK8KDCHHrvNWcXCB5gTIbmpcpnHZyci6gi3Tl5FhRVXUrYwfm87hPrqrqBOMeCcEmrEHz7AfwgrPpunneq8cCd4JJp9LHQMGurUy5eX9ArJFGiLS1PkygOu6N7Ob3nzUxIQp5psO9u0aMLWOAWmlgFLi5VRdDGiKIBIdy0uwKB1Cxk1R4ULjgBvAVhCmikuOd48H4a6cUmblOFoapWeVYX/p34L62sJEXLSYUENiCJ3hFV3Yq3YiozkcyGAbnmrqfXPT1fSJa21AMyn0D2x+I4/BDvMGOnoX9yVxJPqwNP4C7adevsYod4Z6x6dhhHfYFyP8kKMLzydXdK9tkPi20VNvpQYHBoQCRKO4Rk+VDzBnhqSowYJqiOu2Wp6v+MaaJhmWMWOZKC/9hww7PA9DMIULQmXT3Do=

binding.gyp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
'zmq_shared%': 'false',
44
'zmq_draft%': 'false',
55
'zmq_no_sync_resolve%': 'false',
6+
'sanitizers%': 'false',
67
},
78

89
'targets': [

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"prebuildify": "^4.1.2",
4545
"prettier": "^1.19.1",
4646
"semver": ">= 0",
47+
"shx": "^0.3.3",
4748
"tar-fs": "^2.0.0",
4849
"ts-morph": "^7.0.0",
4950
"ts-node": ">= 7",
@@ -75,10 +76,9 @@
7576
"install": "node-gyp-build",
7677
"ci:compile": "tsc --project tsconfig-build.json && node script/ci/downlevel-dts.js",
7778
"ci:doc": "typedoc --out docs --name zeromq.js --excludeProtected --excludePrivate --excludeNotExported --excludeExternals --externalPattern 'src/+(draft|native|compat).ts' --tsconfig tsconfig-build.json --mode file",
78-
"ci:prebuild": "npm run prebuildify",
79-
"prebuildify": "prebuildify --napi -t 12.0.0 -t electron@9.4.4 --strip",
80-
"dev:build": "rm -f vendor/* && touch vendor/.gitkeep && cp node_modules/node-addon-api/{*.h,LICENSE.md} vendor && prebuildify --napi --build-from-source --debug",
81-
"dev:test": "tsc --project tsconfig-build.json && node script/ci/downlevel-dts.js && mocha && script/format.sh && rm -f tmp/*",
79+
"prebuild": "ts-node -P ./tsconfig.json ./script/prebuild.ts",
80+
"dev:build": "prebuildify --napi --build-from-source --debug",
81+
"dev:test": "tsc --project tsconfig-build.json && node script/ci/downlevel-dts.js && mocha && script/format.sh && shx rm -f tmp/*",
8282
"dev:bench": "node --expose-gc test/bench"
8383
},
8484
"keywords": [

script/build.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ if [ -n "${WINDIR}" ]; then
1212
# Working directory is NAPI temporary build directory.
1313
PATH_PREFIX="${PWD}/libzmq"
1414
ARTIFACT="${PATH_PREFIX}/lib/libzmq.lib"
15+
16+
# Handle x86 or x64 build
17+
if [ "${ARCH}" = "x86" ]; then
18+
BUILD_OPTIONS="-DCMAKE_GENERATOR_PLATFORM=x86 ${BUILD_OPTIONS}"
19+
fi
1520
else
1621
# Working directory is project root.
1722
PATH_PREFIX="${PWD}/build/libzmq"

script/ci/prebuild.sh

Lines changed: 0 additions & 30 deletions
This file was deleted.

script/prebuild.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/* eslint-disable @typescript-eslint/camelcase */
2+
3+
import {spawnSync} from "child_process"
4+
5+
main().catch(e => {
6+
throw e
7+
})
8+
9+
async function main() {
10+
console.log("Building distribution binary...")
11+
12+
const prebuildArch = getNodearch(process.env.ARCH)
13+
14+
if (process.env.TRIPLE) {
15+
const TRIPLE = process.env.TRIPLE
16+
17+
const GCC = process.env.GCC
18+
process.env.CC = `${TRIPLE}-gcc-${GCC}`
19+
process.env.CXX = `${TRIPLE}-g++-${GCC}`
20+
21+
const STRIP = `${TRIPLE}-strip`
22+
process.env.PREBUILD_STRIP_BIN = STRIP
23+
24+
process.env.npm_config_arch = prebuildArch
25+
process.env.npm_config_target_arch = prebuildArch
26+
process.env.PREBUILD_arch = prebuildArch
27+
28+
process.env.ZMQ_BUILD_OPTIONS = `--host=${TRIPLE}`
29+
}
30+
31+
let prebuildScript = `prebuildify --napi --arch=${prebuildArch} -t 12.0.0 -t electron@9.4.4 --strip`
32+
33+
if (process.platform == "linux") {
34+
prebuildScript = `${prebuildScript} --tag-libc`
35+
}
36+
if (process.env.ALPINE_CHROOT) {
37+
prebuildScript = `/alpine/enter-chroot ${prebuildScript}`
38+
}
39+
40+
spawnSync(prebuildScript, {
41+
shell: true,
42+
stdio: "inherit",
43+
encoding: "utf8",
44+
})
45+
}
46+
47+
function getNodearch(arch: string | undefined): string {
48+
if (!arch) {
49+
return process.arch
50+
}
51+
if (arch === "x86") {
52+
return "ia32"
53+
} else {
54+
return arch
55+
}
56+
}

0 commit comments

Comments
 (0)