-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ship prebuilt binaries for multiple platforms? #13
Comments
lmdb-store is using prebuildify (you should see a prebuilds directory in the npm distributions). Unfortunately it is presently broken for the current node releases due to prebuild/prebuildify#43 due to electron/node-abi#90, with a fix in electron/node-abi#90 that hopefully will be merged soon. I had also omitted mac/darwin builds for the time being because I was looking into the distinction between building LMDB with posix semaphores (not process-robust) vs system v semaphores (limit of 10), but probably will return to just building that as well. Also, I can workaround the broken abi versions by manually renaming files before an |
Oh, that's awesome! Didn't see it in package.json so I assumed it wasn't being used, but I don't know much about how it works yet. We don't need it right away so no rush, thanks again :) |
FWIW, |
@kriszyp electron/node-abi#90 was closed. Do you think we are already in a position where we can re-enable prebuildify builds again? Also do you think we could enable them both for node v12 and v14 at least for the current release as of today both are still Active LTS? |
@mistic Yes, this will help, although I had already setup some manual file renaming scripts locally to create the right file names for prebuilds that I publish. I believe the last few lmdb-store releases should already have prebuilds of v12, v14 (and v15) with the right abi-version/filename for Windows, Mac, and Linux. Let me know if they aren't working for you... However, LMDB also has upgraded database formats (incompatible with old format used in lmdb-store < 0.7), so in order to try to make this upgrade as seamless as possible, I created a migration script that uses a temporary lmdb-store-0.9 package that reads the legacy format to load records and re-save them into the new format to upgrade existing databases. I haven't put any effort into trying to make this temporary lmdb-store-0.9 package use prebuilds, because, well it is just temporarily needed for so everyone can get their dbs upgraded (I was planning on removing that package as a dependency of lmdb-store in the next major version, maybe in a few weeks). If you are seeing C compilation taking place on install, it is probably because of that package. I could add prebuilds to the lmdb-store-0.9 package too, I suppose. Or I could easily make it an optional dependency (so if build fails, it is ignored). Anyway, let me know if any of these options would be helpful. |
@kriszyp thank you for the detailed explanation 🎉
Humm I would say it is probably better if we can also add prebuilds for |
OK, I published an lmdb-store 0.8.14 that uses a new lmdb-store-0.9 that should have prebuilds for the major versions, want to check to see if that works for you (without requiring compilation)? |
@kriszyp I've checked the new version you published and something is not working as expected here. Looks like the node-gyp compilation tool place and additionally it also have failed:
|
Ah, I missed a compilation error that specifically affects v12. Published 0.8.15 to fix that, can you give that a try? |
@kriszyp it looks like it is working for now. I will update you later with extra info. If everything is working as expected, bazel remote caches of code using lmbd-store should not be invalidated for each build run 😃 |
Would y'all be interested in using something like prebuildify to ship native modules for all platforms within the npm package, rather than relying on developers to build the native modules locally? We are looking to eliminate native module builds as much as possible from our project and it seems like using something like prebuildify is quick for authors and users, and should integrate well this this lmdb-store since it's already using a modern node-gyp-build version.
Thoughts?
The text was updated successfully, but these errors were encountered: