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/[Uu]serData*
!test/saliency/userData.js
lib
include
vendor
packaging/libvips*
packaging/*.log
!packaging/build

View File

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

View File

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

View File

@ -29,7 +29,7 @@ const isFile = function (file) {
};
const unpack = function (tarPath, done) {
const extractor = tar.Extract({ path: __dirname });
const extractor = tar.Extract({ path: path.join(__dirname, 'vendor') });
if (done) {
extractor.on('end', done);
}
@ -64,7 +64,7 @@ const error = function (msg) {
module.exports.download_vips = function () {
// 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)) {
// Ensure Intel 64-bit or ARM
if (arch === 'ia32') {

View File

@ -31,7 +31,7 @@
"Matthias Thoemmes <thoemmes@gmail.com>"
],
"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-leak": "./test/leak/leak.sh",
"test-packaging": "./packaging/test-linux-x64.sh"