Store pre-compiled binary dependencies in 'vendor' directory.

This frees up 'lib' directory to allow for more modular JavaScript.
This commit is contained in:
Lovell Fuller 2016-10-31 14:52:23 +00:00
parent 928edfd1dd
commit 552cfd6ff1
5 changed files with 93 additions and 95 deletions

3
.gitignore vendored
View File

@ -8,8 +8,7 @@ test/saliency/report.json
test/saliency/Image* test/saliency/Image*
test/saliency/[Uu]serData* test/saliency/[Uu]serData*
!test/saliency/userData.js !test/saliency/userData.js
lib vendor
include
packaging/libvips* packaging/libvips*
packaging/*.log packaging/*.log
!packaging/build !packaging/build

View File

@ -10,8 +10,7 @@ test
appveyor.yml appveyor.yml
circle.yml circle.yml
mkdocs.yml mkdocs.yml
lib vendor
include
packaging packaging
preinstall.sh preinstall.sh
.nyc_output .nyc_output

View File

@ -18,14 +18,14 @@
'src/libvips/cplusplus/VImage.cpp' 'src/libvips/cplusplus/VImage.cpp'
], ],
'include_dirs': [ 'include_dirs': [
'include', 'vendor/include',
'include/glib-2.0', 'vendor/include/glib-2.0',
'lib/glib-2.0/include' 'vendor/lib/glib-2.0/include'
], ],
'libraries': [ 'libraries': [
'../lib/libvips.lib', '../vendor/lib/libvips.lib',
'../lib/libglib-2.0.lib', '../vendor/lib/libglib-2.0.lib',
'../lib/libgobject-2.0.lib' '../vendor/lib/libgobject-2.0.lib'
], ],
'configurations': { 'configurations': {
'Release': { 'Release': {
@ -114,9 +114,9 @@
}, { }, {
# Attempt to download pre-built libvips and install locally within node_modules # Attempt to download pre-built libvips and install locally within node_modules
'include_dirs': [ 'include_dirs': [
'include', 'vendor/include',
'include/glib-2.0', 'vendor/include/glib-2.0',
'lib/glib-2.0/include' 'vendor/lib/glib-2.0/include'
], ],
'conditions': [ 'conditions': [
['OS == "win"', { ['OS == "win"', {
@ -124,9 +124,9 @@
'_ALLOW_KEYWORD_MACROS' '_ALLOW_KEYWORD_MACROS'
], ],
'libraries': [ 'libraries': [
'../lib/libvips.lib', '../vendor/lib/libvips.lib',
'../lib/libglib-2.0.lib', '../vendor/lib/libglib-2.0.lib',
'../lib/libgobject-2.0.lib' '../vendor/lib/libgobject-2.0.lib'
] ]
}], }],
['OS == "mac"', { ['OS == "mac"', {
@ -134,12 +134,12 @@
'download_vips': '<!(node -e "require(\'./binding\').download_vips()")' 'download_vips': '<!(node -e "require(\'./binding\').download_vips()")'
}, },
'libraries': [ 'libraries': [
'../lib/libvips-cpp.42.dylib', '../vendor/lib/libvips-cpp.42.dylib',
'../lib/libvips.42.dylib', '../vendor/lib/libvips.42.dylib',
'../lib/libglib-2.0.0.dylib', '../vendor/lib/libglib-2.0.0.dylib',
'../lib/libgobject-2.0.0.dylib', '../vendor/lib/libgobject-2.0.0.dylib',
# Ensure runtime linking is relative to sharp.node # Ensure runtime linking is relative to sharp.node
'-rpath \'@loader_path/../../lib\'' '-rpath \'@loader_path/../../vendor/lib\''
] ]
}], }],
['OS == "linux"', { ['OS == "linux"', {
@ -150,39 +150,39 @@
'_GLIBCXX_USE_CXX11_ABI=0' '_GLIBCXX_USE_CXX11_ABI=0'
], ],
'libraries': [ 'libraries': [
'../lib/libvips-cpp.so', '../vendor/lib/libvips-cpp.so',
'../lib/libvips.so', '../vendor/lib/libvips.so',
'../lib/libglib-2.0.so', '../vendor/lib/libglib-2.0.so',
'../lib/libgobject-2.0.so', '../vendor/lib/libgobject-2.0.so',
# Dependencies of dependencies, included for openSUSE support # Dependencies of dependencies, included for openSUSE support
'../lib/libcairo.so', '../vendor/lib/libcairo.so',
'../lib/libcroco-0.6.so', '../vendor/lib/libcroco-0.6.so',
'../lib/libexif.so', '../vendor/lib/libexif.so',
'../lib/libffi.so', '../vendor/lib/libffi.so',
'../lib/libfontconfig.so', '../vendor/lib/libfontconfig.so',
'../lib/libfreetype.so', '../vendor/lib/libfreetype.so',
'../lib/libgdk_pixbuf-2.0.so', '../vendor/lib/libgdk_pixbuf-2.0.so',
'../lib/libgif.so', '../vendor/lib/libgif.so',
'../lib/libgio-2.0.so', '../vendor/lib/libgio-2.0.so',
'../lib/libgmodule-2.0.so', '../vendor/lib/libgmodule-2.0.so',
'../lib/libgsf-1.so', '../vendor/lib/libgsf-1.so',
'../lib/libgthread-2.0.so', '../vendor/lib/libgthread-2.0.so',
'../lib/libharfbuzz.so', '../vendor/lib/libharfbuzz.so',
'../lib/libjpeg.so', '../vendor/lib/libjpeg.so',
'../lib/liblcms2.so', '../vendor/lib/liblcms2.so',
'../lib/liborc-0.4.so', '../vendor/lib/liborc-0.4.so',
'../lib/libpango-1.0.so', '../vendor/lib/libpango-1.0.so',
'../lib/libpangocairo-1.0.so', '../vendor/lib/libpangocairo-1.0.so',
'../lib/libpangoft2-1.0.so', '../vendor/lib/libpangoft2-1.0.so',
'../lib/libpixman-1.so', '../vendor/lib/libpixman-1.so',
'../lib/libpng.so', '../vendor/lib/libpng.so',
'../lib/librsvg-2.so', '../vendor/lib/librsvg-2.so',
'../lib/libtiff.so', '../vendor/lib/libtiff.so',
'../lib/libwebp.so', '../vendor/lib/libwebp.so',
'../lib/libxml2.so', '../vendor/lib/libxml2.so',
'../lib/libz.so', '../vendor/lib/libz.so',
# Ensure runtime linking is relative to sharp.node # Ensure runtime linking is relative to sharp.node
'-Wl,--disable-new-dtags -Wl,-rpath=\'$${ORIGIN}/../../lib\'' '-Wl,--disable-new-dtags -Wl,-rpath=\'$${ORIGIN}/../../vendor/lib\''
] ]
}] }]
] ]
@ -230,46 +230,46 @@
'copies': [{ 'copies': [{
'destination': 'build/Release', 'destination': 'build/Release',
'files': [ 'files': [
'lib/GNU.Gettext.dll', 'vendor/lib/GNU.Gettext.dll',
'lib/libasprintf-0.dll', 'vendor/lib/libasprintf-0.dll',
'lib/libcairo-2.dll', 'vendor/lib/libcairo-2.dll',
'lib/libcairo-gobject-2.dll', 'vendor/lib/libcairo-gobject-2.dll',
'lib/libcairo-script-interpreter-2.dll', 'vendor/lib/libcairo-script-interpreter-2.dll',
'lib/libcharset-1.dll', 'vendor/lib/libcharset-1.dll',
'lib/libcroco-0.6-3.dll', 'vendor/lib/libcroco-0.6-3.dll',
'lib/libexif-12.dll', 'vendor/lib/libexif-12.dll',
'lib/libexpat-1.dll', 'vendor/lib/libexpat-1.dll',
'lib/libffi-6.dll', 'vendor/lib/libffi-6.dll',
'lib/libfftw3-3.dll', 'vendor/lib/libfftw3-3.dll',
'lib/libfontconfig-1.dll', 'vendor/lib/libfontconfig-1.dll',
'lib/libfreetype-6.dll', 'vendor/lib/libfreetype-6.dll',
'lib/libgcc_s_seh-1.dll', 'vendor/lib/libgcc_s_seh-1.dll',
'lib/libgdk_pixbuf-2.0-0.dll', 'vendor/lib/libgdk_pixbuf-2.0-0.dll',
'lib/libgif-7.dll', 'vendor/lib/libgif-7.dll',
'lib/libgio-2.0-0.dll', 'vendor/lib/libgio-2.0-0.dll',
'lib/libglib-2.0-0.dll', 'vendor/lib/libglib-2.0-0.dll',
'lib/libgmodule-2.0-0.dll', 'vendor/lib/libgmodule-2.0-0.dll',
'lib/libgobject-2.0-0.dll', 'vendor/lib/libgobject-2.0-0.dll',
'lib/libgsf-1-114.dll', 'vendor/lib/libgsf-1-114.dll',
'lib/libgthread-2.0-0.dll', 'vendor/lib/libgthread-2.0-0.dll',
'lib/libiconv-2.dll', 'vendor/lib/libiconv-2.dll',
'lib/libintl-8.dll', 'vendor/lib/libintl-8.dll',
'lib/libjpeg-62.dll', 'vendor/lib/libjpeg-62.dll',
'lib/liblcms2-2.dll', 'vendor/lib/liblcms2-2.dll',
'lib/libpango-1.0-0.dll', 'vendor/lib/libpango-1.0-0.dll',
'lib/libpangocairo-1.0-0.dll', 'vendor/lib/libpangocairo-1.0-0.dll',
'lib/libpangowin32-1.0-0.dll', 'vendor/lib/libpangowin32-1.0-0.dll',
'lib/libpixman-1-0.dll', 'vendor/lib/libpixman-1-0.dll',
'lib/libpng16-16.dll', 'vendor/lib/libpng16-16.dll',
'lib/libquadmath-0.dll', 'vendor/lib/libquadmath-0.dll',
'lib/librsvg-2-2.dll', 'vendor/lib/librsvg-2-2.dll',
'lib/libssp-0.dll', 'vendor/lib/libssp-0.dll',
'lib/libstdc++-6.dll', 'vendor/lib/libstdc++-6.dll',
'lib/libtiff-5.dll', 'vendor/lib/libtiff-5.dll',
'lib/libvips-42.dll', 'vendor/lib/libvips-42.dll',
'lib/libwebp-6.dll', 'vendor/lib/libwebp-6.dll',
'lib/libxml2-2.dll', 'vendor/lib/libxml2-2.dll',
'lib/zlib1.dll' 'vendor/lib/zlib1.dll'
] ]
}] }]
}] }]

View File

@ -29,7 +29,7 @@ const isFile = function (file) {
}; };
const unpack = function (tarPath, done) { const unpack = function (tarPath, done) {
const extractor = tar.Extract({ path: __dirname }); const extractor = tar.Extract({ path: path.join(__dirname, 'vendor') });
if (done) { if (done) {
extractor.on('end', done); extractor.on('end', done);
} }
@ -64,7 +64,7 @@ const error = function (msg) {
module.exports.download_vips = function () { module.exports.download_vips = function () {
// Has vips been installed locally? // Has vips been installed locally?
const vipsHeaderPath = path.join(__dirname, 'include', 'vips', 'vips.h'); const vipsHeaderPath = path.join(__dirname, 'vendor', 'include', 'vips', 'vips.h');
if (!isFile(vipsHeaderPath)) { if (!isFile(vipsHeaderPath)) {
// Ensure Intel 64-bit or ARM // Ensure Intel 64-bit or ARM
if (arch === 'ia32') { if (arch === 'ia32') {

View File

@ -31,7 +31,7 @@
"Matthias Thoemmes <thoemmes@gmail.com>" "Matthias Thoemmes <thoemmes@gmail.com>"
], ],
"scripts": { "scripts": {
"clean": "rm -rf node_modules/ build/ include/ lib/ coverage/ test/fixtures/output.*", "clean": "rm -rf node_modules/ build/ vendor/ coverage/ test/fixtures/output.*",
"test": "semistandard && cross-env VIPS_WARNING=0 nyc --reporter=lcov --branches=96 mocha --slow=5000 --timeout=60000 ./test/unit/*.js", "test": "semistandard && cross-env VIPS_WARNING=0 nyc --reporter=lcov --branches=96 mocha --slow=5000 --timeout=60000 ./test/unit/*.js",
"test-leak": "./test/leak/leak.sh", "test-leak": "./test/leak/leak.sh",
"test-packaging": "./packaging/test-linux-x64.sh" "test-packaging": "./packaging/test-linux-x64.sh"