Level / leveldown

Pure C++ Node.js LevelDB binding. An abstract-leveldown compliant store.
MIT License
775 stars 177 forks source link

Test new linux prebuild #675

Closed vweevers closed 5 years ago

vweevers commented 5 years ago

Since #674, our prebuilt binary for linux is made on CentOS 7 rather than Ubuntu 16.04, making the binary compatible with Debian 8, Ubuntu 14.04, RHEL 7, CentOS 7. Before releasing 5.3.0 we'd like to test the binary on various linux flavors, including those we already supported.

To do so, run npm i leveldown@next (5.3.0-0). If it unexpectedly falls back to compiling, raise your hand. If you have time to spare, also run a more thorough test:

git clone --recurse-submodules https://github.com/Level/leveldown.git
cd leveldown
rm build/ -rf
npm install
npm run download-prebuilds
npm run test-prebuild

Comment below with results. Thanks!

@ralphtheninja @rvagg @peakji

vweevers commented 5 years ago

Install works and tests pass in these docker images:

vweevers commented 5 years ago

Also OK on:

vweevers commented 5 years ago

On FreeBSD 12.0 with node 12.8.1, the prebuild fails to load with:

Error: Shared object "libstdc++.so.6" not found, required by "node.napi.node"

But node-gyp-build correctly falls back to compiling. Tests pass too.

ralphtheninja commented 5 years ago

Testing locally on Ubuntu 19.04 (disco):

$ npm run download-prebuilds 

> leveldown@5.3.0-0 download-prebuilds /home/lms/play/leveldown
> prebuildify-ci download

fs.js:27
const { Math, Object } = primordials;
                         ^

ReferenceError: primordials is not defined
    at fs.js:27:26
    at req_ (/home/lms/play/leveldown/node_modules/natives/index.js:143:24)
    at Object.req [as require] (/home/lms/play/leveldown/node_modules/natives/index.js:55:10)
    at Object.<anonymous> (/home/lms/play/leveldown/node_modules/fstream/node_modules/graceful-fs/fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:936:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)
    at Function.Module._load (internal/modules/cjs/loader.js:703:12)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! leveldown@5.3.0-0 download-prebuilds: `prebuildify-ci download`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the leveldown@5.3.0-0 download-prebuilds script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/lms/.npm/_logs/2019-10-04T11_29_46_296Z-debug.log

Using node v12.10.0. Not sure if this is related to leveldown at all.

vweevers commented 5 years ago

https://github.com/mafintosh/prebuildify-ci/issues/5

ralphtheninja commented 5 years ago

We should fix this asap.

lms@x260 ~/play/leveldown (master)
$ npm ls natives
leveldown@5.3.0-0 /home/lms/play/leveldown
└─┬ prebuildify-ci@1.0.4
  └─┬ unzip@0.1.11
    └─┬ fstream@0.1.31
      └─┬ graceful-fs@3.0.12
        └── natives@1.1.6 
ralphtheninja commented 5 years ago

Ok on Ubuntu 19.04 with node 12.11.1

rvagg commented 5 years ago

Weirdly it even worked on an Ubuntu 12.04 system I happen to have running, with Node 10. That's an older libc but maybe it's not getting newer symbols involved. So that's pretty impressive.

peakji commented 5 years ago

Ok on RedHat RHEL 7.2, with node LTS

vweevers commented 5 years ago

So, good to release?

vweevers commented 5 years ago

Released 5.3.0 (took a while due to queued CI jobs). Thanks all!