Skip to content

Commit fec1f9b

Browse files
authored
feat(*): compatible with GLIBC 2.17 (#604)
1 parent 0b6f415 commit fec1f9b

File tree

4 files changed

+153
-38
lines changed

4 files changed

+153
-38
lines changed

.github/workflows/ci.yaml

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,13 @@ jobs:
3535
npx lerna exec "yarn build --target i686-pc-windows-msvc" --concurrency 1 --stream --no-prefix
3636
yarn test
3737
target: 'i686-pc-windows-msvc'
38-
- host: ubuntu-latest
38+
- host: macos-latest
3939
architecture: x64
4040
target: 'x86_64-unknown-linux-gnu'
41-
docker: |
42-
docker pull $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-debian
43-
docker tag $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-debian builder
41+
setup: |
42+
yarn global add lerna --registry https://registry.npmjs.org --network-timeout 300000
4443
build: |
45-
docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder yarn build
44+
lerna exec "yarn build --target x86_64-unknown-linux-gnu --zig --zig-abi-suffix 2.17 --strip" --concurrency 1 --stream --no-prefix
4645
- host: ubuntu-latest
4746
architecture: x64
4847
target: 'x86_64-unknown-linux-musl'
@@ -127,6 +126,12 @@ jobs:
127126
override: true
128127
target: ${{ matrix.settings.target }}
129128

129+
- name: Install Zig toolchain
130+
uses: goto-bus-stop/setup-zig@v1
131+
if: matrix.settings.target == 'x86_64-unknown-linux-gnu'
132+
with:
133+
version: 0.9.0
134+
130135
- name: Generate Cargo.lock
131136
uses: actions-rs/cargo@v1
132137
with:
@@ -323,6 +328,46 @@ jobs:
323328
npx lerna link
324329
yarn test
325330
331+
test-linux-x64-centos-7:
332+
name: Test bindings on Linux-x64-glibc-2.17
333+
needs:
334+
- build
335+
runs-on: ubuntu-latest
336+
container:
337+
image: centos:7
338+
steps:
339+
- uses: actions/checkout@v2
340+
341+
- name: Install dependencies
342+
run: |
343+
curl -sL https://rpm.nodesource.com/setup_16.x | bash -
344+
yum install nodejs -y
345+
npm install -g yarn
346+
yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
347+
yarn add ts-node -D -W
348+
349+
- name: Download artifacts
350+
uses: actions/download-artifact@v2
351+
with:
352+
name: bindings-x86_64-unknown-linux-gnu
353+
path: artifacts
354+
355+
- name: Move artifacts
356+
run: yarn artifacts
357+
shell: bash
358+
359+
- name: List packages
360+
run: ls -R packages
361+
shell: bash
362+
363+
- name: Build TypeScript
364+
run: yarn build:ts
365+
366+
- name: Test bindings
367+
run: |
368+
npx lerna link
369+
yarn test
370+
326371
test-linux-x64-musl-binding:
327372
name: Test bindings on x86_64-unknown-linux-musl - node@${{ matrix.node }}
328373
needs:
@@ -504,6 +549,7 @@ jobs:
504549
needs:
505550
- build-freebsd
506551
- test-linux-x64-gnu-binding
552+
- test-linux-x64-centos-7
507553
- test-linux-x64-musl-binding
508554
- test-linux-aarch64-gnu-binding
509555
- test-linux-arm-gnueabihf-binding

ava.config.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const USE_TS_NODE = (function () {
2+
try {
3+
require('@swc-node/core')
4+
return false
5+
} catch (e) {
6+
return true
7+
}
8+
})()
9+
10+
module.exports = {
11+
extensions: ['ts'],
12+
workerThreads: false,
13+
require: [USE_TS_NODE ? 'ts-node/register/transpile-only' : '@swc-node/register'],
14+
files: ['packages/**/*.spec.ts'],
15+
environmentVariables: {
16+
TS_NODE_PROJECT: './tsconfig.test.json',
17+
},
18+
}

package.json

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"postinstall": "husky install"
2323
},
2424
"devDependencies": {
25-
"@napi-rs/cli": "^2.3.0",
25+
"@napi-rs/cli": "^2.4.0",
26+
"@swc-node/core": "^1.8.2",
2627
"@swc-node/register": "^1.4.2",
2728
"@types/node": "^17.0.8",
2829
"@typescript-eslint/eslint-plugin": "^5.9.0",
@@ -41,24 +42,10 @@
4142
"npm-run-all": "^4.1.5",
4243
"nyc": "^15.1.0",
4344
"prettier": "^2.5.1",
45+
"ts-node": "^10.4.0",
4446
"tslib": "^2.3.1",
4547
"typescript": "^4.5.4"
4648
},
47-
"ava": {
48-
"extensions": [
49-
"ts"
50-
],
51-
"workerThreads": false,
52-
"require": [
53-
"@swc-node/register"
54-
],
55-
"files": [
56-
"packages/**/*.spec.ts"
57-
],
58-
"environmentVariables": {
59-
"TS_NODE_PROJECT": "./tsconfig.test.json"
60-
}
61-
},
6249
"lint-staged": {
6350
"*.@(js|ts|tsx)": [
6451
"eslint -c .eslintrc.yml --fix"

yarn.lock

Lines changed: 81 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,18 @@
185185
"@babel/helper-validator-identifier" "^7.15.7"
186186
to-fast-properties "^2.0.0"
187187

188+
"@cspotcode/[email protected]":
189+
version "0.8.0"
190+
resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b"
191+
integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==
192+
193+
"@cspotcode/[email protected]":
194+
version "0.7.0"
195+
resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5"
196+
integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==
197+
dependencies:
198+
"@cspotcode/source-map-consumer" "0.8.0"
199+
188200
"@eslint/eslintrc@^1.0.5":
189201
version "1.0.5"
190202
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318"
@@ -926,10 +938,10 @@
926938
semver "^7.3.5"
927939
tar "^6.1.11"
928940

929-
"@napi-rs/cli@^2.3.0":
930-
version "2.3.0"
931-
resolved "https://registry.yarnpkg.com/@napi-rs/cli/-/cli-2.3.0.tgz#fb3c9179bf2ff1088f19b235108208acaf051b6f"
932-
integrity sha512-sDhyEuUVmgQvm37teoHgJP07+XJy57jfbnDBFVrgOw/+vbr/6yhcn68R3oYxxNLkp3+d57ChVyHxglEFJ6j4Hg==
941+
"@napi-rs/cli@^2.4.0":
942+
version "2.4.0"
943+
resolved "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.4.0.tgz#a74d991e12871d6fb8eb32b33cc53a9c105b1921"
944+
integrity sha512-rq4ivqWY7KWG104gRxTmWyehE4eUxJ/mBJx81r3PeghtLZ11NpJNuvF9kSvsol8hTjJQ7CWlF2plQ20I9rMOng==
933945

934946
"@napi-rs/triples@^1.1.0":
935947
version "1.1.0"
@@ -1245,6 +1257,26 @@
12451257
resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
12461258
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
12471259

1260+
"@tsconfig/node10@^1.0.7":
1261+
version "1.0.8"
1262+
resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9"
1263+
integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==
1264+
1265+
"@tsconfig/node12@^1.0.7":
1266+
version "1.0.9"
1267+
resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c"
1268+
integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==
1269+
1270+
"@tsconfig/node14@^1.0.0":
1271+
version "1.0.1"
1272+
resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2"
1273+
integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==
1274+
1275+
"@tsconfig/node16@^1.0.2":
1276+
version "1.0.2"
1277+
resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e"
1278+
integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
1279+
12481280
"@types/bcrypt@^5.0.0":
12491281
version "5.0.0"
12501282
resolved "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.0.tgz#a835afa2882d165aff5690893db314eaa98b9f20"
@@ -1565,7 +1597,7 @@ acorn-jsx@^5.3.1:
15651597
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
15661598
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
15671599

1568-
acorn-walk@^8.2.0:
1600+
acorn-walk@^8.1.1, acorn-walk@^8.2.0:
15691601
version "8.2.0"
15701602
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
15711603
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
@@ -1719,6 +1751,11 @@ are-we-there-yet@~1.1.2:
17191751
delegates "^1.0.0"
17201752
readable-stream "^2.0.6"
17211753

1754+
arg@^4.1.0:
1755+
version "4.1.3"
1756+
resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
1757+
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
1758+
17221759
argon2@^0.28.3:
17231760
version "0.28.3"
17241761
resolved "https://registry.npmjs.org/argon2/-/argon2-0.28.3.tgz#e5234eccf20a643ffc3b1bbd1aa9e81092e0d8e9"
@@ -2531,6 +2568,11 @@ crc@^4.1.0:
25312568
resolved "https://registry.yarnpkg.com/crc/-/crc-4.1.0.tgz#bb875159ac3012d52611f13a2bcf5d46b401c8e7"
25322569
integrity sha512-xl6/PgOWZCDOA9mnytKzg2ftRS2YT/SUnNPPiCMoD6KWuiJayRjHcaLmBzGWNZGHSXDSrDuLNUEIljLRMbn7vA==
25332570

2571+
create-require@^1.1.0:
2572+
version "1.1.1"
2573+
resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
2574+
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
2575+
25342576
cross-env@^7.0.3:
25352577
version "7.0.3"
25362578
resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
@@ -2726,6 +2768,11 @@ dezalgo@^1.0.0:
27262768
asap "^2.0.0"
27272769
wrappy "1"
27282770

2771+
diff@^4.0.1:
2772+
version "4.0.2"
2773+
resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
2774+
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
2775+
27292776
dir-glob@^3.0.1:
27302777
version "3.0.1"
27312778
resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@@ -3134,18 +3181,7 @@ fast-diff@^1.1.2, fast-diff@^1.2.0:
31343181
resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
31353182
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
31363183

3137-
fast-glob@^3.1.1:
3138-
version "3.2.7"
3139-
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
3140-
integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
3141-
dependencies:
3142-
"@nodelib/fs.stat" "^2.0.2"
3143-
"@nodelib/fs.walk" "^1.2.3"
3144-
glob-parent "^5.1.2"
3145-
merge2 "^1.3.0"
3146-
micromatch "^4.0.4"
3147-
3148-
fast-glob@^3.2.7:
3184+
fast-glob@^3.1.1, fast-glob@^3.2.7:
31493185
version "3.2.10"
31503186
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.10.tgz#2734f83baa7f43b7fd41e13bc34438f4ffe284ee"
31513187
integrity sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A==
@@ -4474,6 +4510,11 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
44744510
dependencies:
44754511
semver "^6.0.0"
44764512

4513+
make-error@^1.1.1:
4514+
version "1.3.6"
4515+
resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
4516+
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
4517+
44774518
make-fetch-happen@^8.0.9:
44784519
version "8.0.14"
44794520
resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222"
@@ -6607,6 +6648,24 @@ trim-newlines@^3.0.0:
66076648
resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
66086649
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
66096650

6651+
ts-node@^10.4.0:
6652+
version "10.4.0"
6653+
resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7"
6654+
integrity sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==
6655+
dependencies:
6656+
"@cspotcode/source-map-support" "0.7.0"
6657+
"@tsconfig/node10" "^1.0.7"
6658+
"@tsconfig/node12" "^1.0.7"
6659+
"@tsconfig/node14" "^1.0.0"
6660+
"@tsconfig/node16" "^1.0.2"
6661+
acorn "^8.4.1"
6662+
acorn-walk "^8.1.1"
6663+
arg "^4.1.0"
6664+
create-require "^1.1.0"
6665+
diff "^4.0.1"
6666+
make-error "^1.1.1"
6667+
yn "3.1.1"
6668+
66106669
tsconfig-paths@^3.12.0:
66116670
version "3.12.0"
66126671
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
@@ -7148,6 +7207,11 @@ yargs@^17.3.1:
71487207
y18n "^5.0.5"
71497208
yargs-parser "^21.0.0"
71507209

7210+
7211+
version "3.1.1"
7212+
resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
7213+
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
7214+
71517215
yocto-queue@^1.0.0:
71527216
version "1.0.0"
71537217
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"

0 commit comments

Comments
 (0)