developmentseed/node-sqlite3 — pull request #192 by springmeyer (2013-09-08 23:53:34+00:00)
Title: Support for binary deployment

This pull changes the behavior of `node-sqlite3` builds to prefer installation from pre-built binaries. Closes #67

This makes it easier and faster to run `npm install sqlite3` on OS X, Linux, and Windows without any compiler being available and also even without `python` and `node-gyp`. When a user runs `npm install sqlite3` or `npm install` from the source checkout first a binary `node-sqlite3.node` file will be fetched, if available, from a remote repository of binaries managed by @springmeyer. If a binary is not available that matches what the user needs then the build system will fall back to a source compile.

If a developer wants a source compile instead of a binary then she can pass `--build-from-source` or `--build-from-source=sqlite3` to the args passed to `npm install` or `node-gyp`.

Binaries are versioned based on:

1. node-sqlite3 version, specially MAJOR.MINOR.ABI where MAJOR and MINOR match the semver version of the module but ABI is a special letter that is manually incremented by node-sqlite3 developers when the c++ code in src changes enough to warrant new builds. This allows the semver PATCH to be incremented independently of binary compatibility and will allow for easy tagging of new PATCH versions without new binary builds.
1. platform: e.g. `win32`, `linux`, `darwin`
1. Node `process.versions.modules` number, which is a manually incremented (by node.js core developers) version that indicates ABI breakages in node's C++ API. For older node versions (before v0.10.x) where this is not available the v8 MAJOR.MINOR version that node.js included is used instead1. arch: eg. 32 bit (ia32, aka i386) or 64 bit (x64, aka x86_64)
1. Release/Debug configuration

Currently these are the `Release` builds available:

```
s3cmd ls s3://node-sqlite3/Release/*
2013-09-08 22:54 383667 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-node-v11-darwin-ia32.tar.gz
2013-09-08 22:54 400503 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-node-v11-darwin-x64.tar.gz
2013-09-08 22:32 435705 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-node-v11-linux-x64.tar.gz
2013-09-08 22:32 379754 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-node-v11-win32-ia32.tar.gz
2013-09-08 22:32 460186 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-node-v11-win32-x64.tar.gz
2013-09-08 22:32 410606 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.11-linux-x64.node.gz
2013-09-08 22:32 436081 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.11-linux-x64.tar.gz
2013-09-08 22:32 347648 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-darwin-ia32.node.gz
2013-09-08 22:32 347244 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-darwin-ia32.node.tar.gz
2013-09-08 22:32 364251 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-darwin-x64.node.gz
2013-09-08 22:32 363995 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-darwin-x64.node.tar.gz
2013-09-08 22:32 410518 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-linux-x64.node.gz
2013-09-08 22:32 435760 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-linux-x64.tar.gz
2013-09-08 22:32 379038 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-win32-ia32.node.gz
2013-09-08 22:32 459215 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.14-win32-x64.node.gz
2013-09-08 22:32 508678 s3://node-sqlite3/Release/node_sqlite3-v2.1.a-v8-3.6-linux-x64.node.gz
```