diff --git a/.gitignore b/.gitignore index c616ca70..7398e1af 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ lib include packaging/libvips* packaging/*.log +!packaging/build .DS_Store diff --git a/appveyor.yml b/appveyor.yml index 9a533d84..401b6385 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -os: Previous Visual Studio 2015 +os: Visual Studio 2015 version: "{build}" build: off platform: x64 @@ -10,6 +10,7 @@ environment: - nodejs_version: "6" install: - ps: Install-Product node $env:nodejs_version x64 + - npm install -g npm@latest - npm install test_script: - npm run-script test-win diff --git a/binding.gyp b/binding.gyp index 5a1d6742..e96cc5b1 100644 --- a/binding.gyp +++ b/binding.gyp @@ -175,7 +175,7 @@ '../lib/libxml2.so', '../lib/libz.so', # Ensure runtime linking is relative to sharp.node - '-Wl,-rpath=\'$${ORIGIN}/../../lib\'' + '-Wl,--disable-new-dtags -Wl,-rpath=\'$${ORIGIN}/../../lib\'' ] }] ] diff --git a/binding.js b/binding.js index 02eda8ef..9a2c8f9d 100644 --- a/binding.js +++ b/binding.js @@ -46,6 +46,24 @@ var unpack = function(tarPath, done) { .pipe(extractor); }; +var platformId = function() { + var id = [process.platform, process.arch].join('-'); + if (process.arch === 'arm') { + switch(process.config.variables.arm_version) { + case '8': + id = id + 'v8'; + break; + case '7': + id = id + 'v7'; + break; + default: + id = id + 'v6'; + break; + } + } + return id; +}; + // Error var error = function(msg) { if (msg instanceof Error) { @@ -77,8 +95,7 @@ module.exports.download_vips = function() { } } // Arch/platform-specific .tar.gz - var platform = (process.arch === 'arm') ? 'arm' : process.platform.substr(0, 3); - var tarFilename = ['libvips', minimumLibvipsVersion, platform].join('-') + '.tar.gz'; + var tarFilename = ['libvips', minimumLibvipsVersion, platformId()].join('-') + '.tar.gz'; var tarPath = path.join(__dirname, 'packaging', tarFilename); if (isFile(tarPath)) { unpack(tarPath); diff --git a/circle.yml b/circle.yml index 829d02ae..9b10fadd 100644 --- a/circle.yml +++ b/circle.yml @@ -3,4 +3,4 @@ machine: - docker test: override: - - ./packaging/test.sh + - ./packaging/test-linux-x64.sh diff --git a/docs/changelog.md b/docs/changelog.md index c06efe7a..00878e57 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,11 +2,11 @@ ### v0.16 - "*pencil*" -Requires libvips v8.3.2 +Requires libvips v8.3.3 #### v0.16.0 - TBD -* Add pre-compiled libvips for OS X. +* Add pre-compiled libvips for OS X, ARMv7 and ARMv8. [#312](https://github.com/lovell/sharp/issues/312) * Ensure boolean, bandbool, extractChannel ops occur before sRGB conversion. diff --git a/docs/install.md b/docs/install.md index 5da69ff4..1b1f3002 100644 --- a/docs/install.md +++ b/docs/install.md @@ -7,7 +7,7 @@ npm install sharp ### Prerequisites * C++11 compatible compiler such as gcc 4.8+, clang 3.0+ or MSVC 2013+ -* [node-gyp](https://github.com/TooTallNate/node-gyp#installation) +* [node-gyp](https://github.com/TooTallNate/node-gyp#installation) and its dependencies ### Linux @@ -15,18 +15,18 @@ npm install sharp [![Linux Build Status](https://circleci.com/gh/lovell/sharp.svg?style=svg&circle-token=6cb6d1d287a51af83722b19ed8885377fbc85e5c)](https://circleci.com/gh/lovell/sharp) libvips and its dependencies are fetched and stored within `node_modules/sharp/lib` during `npm install`. -This involves an automated HTTPS download of approximately 6.7MB. +This involves an automated HTTPS download of approximately 6.5MB. Most recent Linux-based operating systems with glibc running on x64 and ARMv6+ CPUs should "just work", e.g.: * Debian 7, 8 -* Ubuntu 12.04, 14.04, 15.10, 16.04 +* Ubuntu 12.04, 14.04, 16.04 * Centos 7 * Fedora 22, 23 * openSUSE 13.2 -* Archlinux 2015.06.01 +* Archlinux * Raspbian Jessie -* Amazon Linux 2015.03, 2015.09 +* Amazon Linux 2016.03 To use your own version of libvips instead of the provided binaries, make sure it is at least the version listed under `config.libvips` in the `package.json` file and @@ -73,7 +73,7 @@ To use your own version of libvips instead of the provided binaries, make sure i at least the version listed under `config.libvips` in the `package.json` file and that it can be located using `pkg-config --modversion vips-cpp`. -### Windows +### Windows x64 [![Windows x64 Build Status](https://ci.appveyor.com/api/projects/status/pgtul704nkhhg6sg)](https://ci.appveyor.com/project/lovell/sharp) diff --git a/package.json b/package.json index 1ca98264..24c32df1 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "test": "VIPS_WARNING=0 node ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- --slow=5000 --timeout=30000 ./test/unit/*.js", "test-win": "node ./node_modules/mocha/bin/mocha --slow=5000 --timeout=60000 ./test/unit/*.js", "test-leak": "./test/leak/leak.sh", - "test-packaging": "./packaging/test.sh", + "test-packaging": "./packaging/test-linux-x64.sh", "test-clean": "rm -rf coverage/ test/fixtures/output.* && npm install && npm test" }, "main": "index.js", @@ -80,7 +80,7 @@ }, "license": "Apache-2.0", "config": { - "libvips": "8.3.2" + "libvips": "8.3.3" }, "engines": { "node": ">=0.10" diff --git a/packaging/README.md b/packaging/README.md new file mode 100644 index 00000000..dbc4e3b6 --- /dev/null +++ b/packaging/README.md @@ -0,0 +1,57 @@ +# Packaging scripts + +libvips and its dependencies are provided as pre-compiled shared libraries +for the most common operating systems and CPU architectures. + +During `npm install`, these binaries are fetched as tarballs from +[Bintray](https://dl.bintray.com/lovell/sharp/) via HTTPS +and stored locally within `node_modules/sharp`. + +## Using a custom tarball + +A custom tarball stored on the local filesystem can be used instead. +Place it in the following location, where `x.y.z` is the libvips version, +`platform` is the value of `process.platform` and +`arch` is the value of `process.arch` (plus the version number for ARM). + +`node_modules/sharp/packaging/libvips-x.y.z-platform-arch.tar.gz` + +For example, for libvips v8.3.3 on an ARMv6 Linux machine, use: + +`node_modules/sharp/packaging/libvips-8.3.3-linux-armv6.tar.gz` + +Remove any `sharp/lib` and `sharp/include` directories +before running `npm install` again. + +## Creating a tarball + +Most people will not need to do this; proceed with caution. + +The `packaging` directory contains the top-level [build script](build.sh). + +### Linux + +One [build script](build/lin.sh) is used to (cross-)compile +the same shared libraries within multiple containers. + +* [x64](linux-x64/Dockerfile) +* [ARMv6](linux-armv6/Dockerfile) +* [ARMv7-A](linux-armv7/Dockerfile) +* [ARMv8-A](linux-armv8/Dockerfile) + +The QEMU user mode emulation binaries are required to build for +the ARMv6 platform as the Debian armhf cross-compiler erroneously +generates unsupported Thumb 2 instructions. + +```sh +sudo apt-get install qemu-user-static +``` + +### Windows + +The output of libvips' [build-win64](https://github.com/jcupitt/build-win64) +"web" target is [post-processed](build/win.sh) within a [container](win32-x64/Dockerfile). + +### OS X + +See [package-libvips-darwin](https://github.com/lovell/package-libvips-darwin). diff --git a/packaging/arm-build.sh b/packaging/arm-build.sh deleted file mode 100755 index dcb57d23..00000000 --- a/packaging/arm-build.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh - -if [ $# -lt 1 ]; then - echo "Usage: $0 IP" - echo "Build libvips for ARM using Docker, where IP is" - echo "the address of a Raspberry Pi running HypriotOS" - exit 1 -fi -IP="$1" - -echo "Verifying connectivity to $IP" -if ! ping -c 1 $IP; then - echo "Could not connect to $IP" - exit 1 -fi - -if ! type sshpass >/dev/null; then - echo "Please install sshpass" - exit 1 -fi - -export SSHPASS=hypriot - -echo "Copying arm/Dockerfile and arm/build.sh to device" -sshpass -e scp -o PreferredAuthentications=password -r arm root@${IP}:/root - -echo "Building Raspbian-based container" -sshpass -e ssh -o PreferredAuthentications=password -t root@${IP} "docker build -t vips-dev-arm arm" - -echo "Running arm/build.sh within container" -sshpass -e ssh -o PreferredAuthentications=password -t root@${IP} "docker run -i -t --rm -v \${PWD}/arm:/arm vips-dev-arm sh -c 'cd /arm && ./build.sh' | tee arm/build.log" - -echo "Copying resultant tar.gz file from device" -sshpass -e scp -o PreferredAuthentications=password root@${IP}:/root/arm/*.tar.gz . diff --git a/packaging/arm/Dockerfile b/packaging/arm/Dockerfile deleted file mode 100644 index 3a329875..00000000 --- a/packaging/arm/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM resin/rpi-raspbian:jessie -MAINTAINER Lovell Fuller - -# Build dependencies -RUN apt-get update && apt-get install -y build-essential autoconf libtool nasm gtk-doc-tools texinfo curl diff --git a/packaging/build.sh b/packaging/build.sh index 80939503..5fd63e95 100755 --- a/packaging/build.sh +++ b/packaging/build.sh @@ -1,30 +1,43 @@ #!/bin/sh +set -e -VERSION_VIPS=8.3.2 +if [ $# -lt 1 ]; then + echo + echo "Usage: $0 VERSION [PLATFORM]" + echo "Build shared libraries for libvips and its dependencies via containers" + echo + echo "Please specify the libvips VERSION, e.g. 8.3.3" + echo + echo "Optionally build for only one PLATFORM, defaults to building for all" + echo "Possible values for PLATFORM are: win32-x64, linux-x64, linux-armv6," + echo "linux-armv7, linux-armv8" + echo + exit 1 +fi +VERSION_VIPS="$1" +PLATFORM="${2:-all}" # Is docker available? - if ! type docker >/dev/null; then echo "Please install docker" exit 1 fi -# TODO: docker v1.9.0 allows build-time args - https://github.com/docker/docker/pull/15182 +# Windows (x64) +if [ $PLATFORM = "all" ] || [ $PLATFORM = "win32-x64" ]; then + echo "Building win32-x64..." + docker build -t vips-dev-win32-x64 win32-x64 + docker run --rm -e "VERSION_VIPS=${VERSION_VIPS}" -v $PWD:/packaging vips-dev-win32-x64 sh -c "/packaging/build/win.sh" +fi -# Windows - -docker build -t vips-dev-win win -WIN_CONTAINER_ID=$(docker run -d vips-dev-win) -docker cp "${WIN_CONTAINER_ID}:/libvips-${VERSION_VIPS}-win.tar.gz" . -docker rm "${WIN_CONTAINER_ID}" - -# Linux - -docker build -t vips-dev-lin lin -LIN_CONTAINER_ID=$(docker run -d vips-dev-lin) -docker cp "${LIN_CONTAINER_ID}:/libvips-${VERSION_VIPS}-lin.tar.gz" . -docker rm "${LIN_CONTAINER_ID}" - -# Checksums +# Linux (x64, ARMv6, ARMv7, ARMv8) +for flavour in linux-x64 linux-armv6 linux-armv7 linux-armv8; do + if [ $PLATFORM = "all" ] || [ $PLATFORM = $flavour ]; then + echo "Building $flavour..." + docker build -t vips-dev-$flavour $flavour + docker run --rm -e "VERSION_VIPS=${VERSION_VIPS}" -v $PWD:/packaging vips-dev-$flavour sh -c "/packaging/build/lin.sh" + fi +done +# Display checksums sha256sum *.tar.gz diff --git a/packaging/arm/build.sh b/packaging/build/lin.sh similarity index 59% rename from packaging/arm/build.sh rename to packaging/build/lin.sh index 26ca0225..00baad19 100755 --- a/packaging/arm/build.sh +++ b/packaging/build/lin.sh @@ -1,6 +1,5 @@ #!/bin/sh - -# To be run inside a Raspbian container +set -e # Working directories DEPS=/deps @@ -13,8 +12,8 @@ export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${TARGET}/lib/pkgconfig" export PATH="${PATH}:${TARGET}/bin" export CPPFLAGS="-I${TARGET}/include" export LDFLAGS="-L${TARGET}/lib" -export CFLAGS="-O3" -export CXXFLAGS="-O3" +export CFLAGS="${FLAGS}" +export CXXFLAGS="${FLAGS}" # Dependency version numbers VERSION_ZLIB=1.2.8 @@ -39,7 +38,6 @@ VERSION_PANGO=1.40.1 VERSION_CROCO=0.6.11 VERSION_SVG=2.40.16 VERSION_GIF=5.1.4 -VERSION_VIPS=8.3.2 # Least out-of-sync Sourceforge mirror SOURCEFORGE_MIRROR=netix @@ -47,131 +45,157 @@ SOURCEFORGE_MIRROR=netix mkdir ${DEPS}/zlib curl -Ls http://zlib.net/zlib-${VERSION_ZLIB}.tar.xz | tar xJC ${DEPS}/zlib --strip-components=1 cd ${DEPS}/zlib -./configure --prefix=${TARGET} && make install +./configure --prefix=${TARGET} --uname=linux +make install rm ${TARGET}/lib/libz.a mkdir ${DEPS}/ffi curl -Ls ftp://sourceware.org/pub/libffi/libffi-${VERSION_FFI}.tar.gz | tar xzC ${DEPS}/ffi --strip-components=1 cd ${DEPS}/ffi -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-builddir && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-builddir +make install-strip mkdir ${DEPS}/glib curl -Ls https://download.gnome.org/sources/glib/2.49/glib-${VERSION_GLIB}.tar.xz | tar xJC ${DEPS}/glib --strip-components=1 cd ${DEPS}/glib -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --with-pcre=internal && make install-strip +echo glib_cv_stack_grows=no >>glib.cache +echo glib_cv_uscore=no >>glib.cache +./configure --cache-file=glib.cache --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --with-pcre=internal +make install-strip mkdir ${DEPS}/xml2 curl -Ls http://xmlsoft.org/sources/libxml2-${VERSION_XML2}.tar.gz | tar xzC ${DEPS}/xml2 --strip-components=1 cd ${DEPS}/xml2 -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --without-python --with-zlib=${TARGET} && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ + --without-python --without-debug --without-docbook --without-ftp --without-html --without-legacy \ + --without-pattern --without-push --without-regexps --without-schemas --without-schematron --with-zlib=${TARGET} +make install-strip mkdir ${DEPS}/gsf curl -Ls https://download.gnome.org/sources/libgsf/1.14/libgsf-${VERSION_GSF}.tar.xz | tar xJC ${DEPS}/gsf --strip-components=1 cd ${DEPS}/gsf -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/exif curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/libexif/libexif/${VERSION_EXIF}/libexif-${VERSION_EXIF}.tar.bz2 | tar xjC ${DEPS}/exif --strip-components=1 cd ${DEPS}/exif -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +autoreconf -fiv +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/lcms2 curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/lcms/lcms/${VERSION_LCMS2}/lcms2-${VERSION_LCMS2}.tar.gz | tar xzC ${DEPS}/lcms2 --strip-components=1 cd ${DEPS}/lcms2 -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/jpeg curl -Ls https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${VERSION_JPEG}.tar.gz | tar xzC ${DEPS}/jpeg --strip-components=1 cd ${DEPS}/jpeg -autoreconf -fiv && ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --with-jpeg8 --without-turbojpeg && make install-strip +autoreconf -fiv +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --with-jpeg8 --without-turbojpeg +make install-strip mkdir ${DEPS}/png16 curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/libpng/libpng16/${VERSION_PNG16}/libpng-${VERSION_PNG16}.tar.xz | tar xJC ${DEPS}/png16 --strip-components=1 cd ${DEPS}/png16 -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/webp curl -Ls http://downloads.webmproject.org/releases/webp/libwebp-${VERSION_WEBP}.tar.gz | tar xzC ${DEPS}/webp --strip-components=1 cd ${DEPS}/webp -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-neon +make install-strip mkdir ${DEPS}/tiff curl -Ls http://download.osgeo.org/libtiff/tiff-${VERSION_TIFF}.tar.gz | tar xzC ${DEPS}/tiff --strip-components=1 cd ${DEPS}/tiff -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip -rm ${TARGET}/lib/libtiffxx* +if [ -n "${CHOST}" ]; then autoreconf -fiv; fi +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-mdi --disable-cxx +make install-strip mkdir ${DEPS}/orc curl -Ls http://gstreamer.freedesktop.org/data/src/orc/orc-${VERSION_ORC}.tar.xz | tar xJC ${DEPS}/orc --strip-components=1 cd ${DEPS}/orc -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip +cd ${TARGET}/lib +rm -rf liborc-test-* mkdir ${DEPS}/gdkpixbuf curl -Ls https://download.gnome.org/sources/gdk-pixbuf/2.35/gdk-pixbuf-${VERSION_GDKPIXBUF}.tar.xz | tar xJC ${DEPS}/gdkpixbuf --strip-components=1 cd ${DEPS}/gdkpixbuf -LD_LIBRARY_PATH=${TARGET}/lib ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --disable-introspection --disable-modules --without-libpng --without-libjpeg --without-libtiff --without-gdiplus --with-included-loaders= \ - && make install-strip +LD_LIBRARY_PATH=${TARGET}/lib \ +./configure --cache-file=gdkpixbuf.cache --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-introspection --disable-modules --disable-gio-sniffing --without-libpng --without-libjpeg --without-libtiff --without-gdiplus --with-included-loaders= +make install-strip mkdir ${DEPS}/freetype -curl -Ls http://download.savannah.gnu.org/releases/freetype/freetype-${VERSION_FREETYPE}.tar.gz | tar xzC ${DEPS}/freetype --strip-components=1 +curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/freetype/freetype2/${VERSION_FREETYPE}/freetype-${VERSION_FREETYPE}.tar.gz | tar xzC ${DEPS}/freetype --strip-components=1 cd ${DEPS}/freetype -./configure --prefix=${TARGET} --enable-shared --disable-static && make install +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static +make install mkdir ${DEPS}/fontconfig curl -Ls https://www.freedesktop.org/software/fontconfig/release/fontconfig-${VERSION_FONTCONFIG}.tar.bz2 | tar xjC ${DEPS}/fontconfig --strip-components=1 cd ${DEPS}/fontconfig -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --enable-libxml2 && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --enable-libxml2 +make install-strip mkdir ${DEPS}/harfbuzz curl -Ls https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${VERSION_HARFBUZZ}.tar.bz2 | tar xjC ${DEPS}/harfbuzz --strip-components=1 cd ${DEPS}/harfbuzz -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/pixman curl -Ls http://cairographics.org/releases/pixman-${VERSION_PIXMAN}.tar.gz | tar xzC ${DEPS}/pixman --strip-components=1 cd ${DEPS}/pixman -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-libpng --disable-arm-iwmmxt && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-libpng --disable-arm-iwmmxt +make install-strip mkdir ${DEPS}/cairo curl -Ls http://cairographics.org/releases/cairo-${VERSION_CAIRO}.tar.xz | tar xJC ${DEPS}/cairo --strip-components=1 cd ${DEPS}/cairo -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ --disable-xlib --disable-xcb --disable-quartz --disable-win32 --disable-egl --disable-glx --disable-wgl \ - --disable-script --disable-ps --disable-gobject --disable-trace --disable-interpreter \ - && make install-strip + --disable-script --disable-ps --disable-gobject --disable-trace --disable-interpreter +make install-strip mkdir ${DEPS}/pango curl -Ls https://download.gnome.org/sources/pango/1.40/pango-${VERSION_PANGO}.tar.xz | tar xJC ${DEPS}/pango --strip-components=1 cd ${DEPS}/pango -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/croco curl -Ls https://download.gnome.org/sources/libcroco/0.6/libcroco-${VERSION_CROCO}.tar.xz | tar xJC ${DEPS}/croco --strip-components=1 cd ${DEPS}/croco -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/svg curl -Ls https://download.gnome.org/sources/librsvg/2.40/librsvg-${VERSION_SVG}.tar.xz | tar xJC ${DEPS}/svg --strip-components=1 cd ${DEPS}/svg -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --disable-introspection --disable-tools \ - && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-introspection --disable-tools --disable-pixbuf-loader +make install-strip mkdir ${DEPS}/gif curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/giflib/giflib-${VERSION_GIF}.tar.gz | tar xzC ${DEPS}/gif --strip-components=1 cd ${DEPS}/gif -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking +make install-strip mkdir ${DEPS}/vips curl -Ls http://www.vips.ecs.soton.ac.uk/supported/8.3/vips-${VERSION_VIPS}.tar.gz | tar xzC ${DEPS}/vips --strip-components=1 cd ${DEPS}/vips -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ +./configure --host=${CHOST} --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ --disable-debug --disable-introspection --without-python --without-fftw \ --without-magick --without-pangoft2 --without-ppm --without-analyze --without-radiance \ --with-zip-includes=${TARGET}/include --with-zip-libraries=${TARGET}/lib \ - --with-jpeg-includes=${TARGET}/include --with-jpeg-libraries=${TARGET}/lib \ - && make install-strip + --with-jpeg-includes=${TARGET}/include --with-jpeg-libraries=${TARGET}/lib +make install-strip # Remove the old C++ bindings cd ${TARGET}/include @@ -208,4 +232,5 @@ echo "{\n\ }" >lib/versions.json # Create .tar.gz -GZIP=-9 tar czf /arm/libvips-${VERSION_VIPS}-arm.tar.gz include lib +tar czf /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz include lib +advdef --recompress --shrink-insane /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz diff --git a/packaging/build/win.sh b/packaging/build/win.sh new file mode 100755 index 00000000..a4cdad44 --- /dev/null +++ b/packaging/build/win.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +# Fetch and unzip +mkdir /vips +cd /vips +curl -L -O https://github.com/lovell/build-win64/releases/download/v${VERSION_VIPS}/vips-dev-w64-web-${VERSION_VIPS}.zip +unzip vips-dev-w64-web-${VERSION_VIPS}.zip + +# Clean and zip +cd /vips/vips-dev-8.3 +rm bin/libvipsCC-42.dll bin/libvips-cpp-42.dll bin/libgsf-win32-1-114.dll +cp bin/*.dll lib/ +cp -r lib64/* lib/ + +echo "Creating tarball" +tar czf /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz include lib/glib-2.0 lib/libvips.lib lib/libglib-2.0.lib lib/libgobject-2.0.lib lib/*.dll +echo "Shrinking tarball" +advdef --recompress --shrink-insane /packaging/libvips-${VERSION_VIPS}-${PLATFORM}.tar.gz diff --git a/packaging/lin/Dockerfile b/packaging/lin/Dockerfile deleted file mode 100644 index 1d6ce189..00000000 --- a/packaging/lin/Dockerfile +++ /dev/null @@ -1,222 +0,0 @@ -FROM debian:wheezy -MAINTAINER Lovell Fuller - -# Build dependencies -RUN apt-get update && apt-get install -y build-essential autoconf libtool nasm gtk-doc-tools texinfo advancecomp - -# Create working directories -ENV DEPS=/deps \ - TARGET=/target -RUN mkdir ${DEPS} && mkdir ${TARGET} - -# Common build paths and flags -ENV PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${TARGET}/lib/pkgconfig" \ - PATH="${PATH}:${TARGET}/bin" \ - CPPFLAGS="-I${TARGET}/include" \ - LDFLAGS="-L${TARGET}/lib" \ - CFLAGS="-O3" \ - CXXFLAGS="-O3" - -# Dependency version numbers -ENV VERSION_ZLIB=1.2.8 \ - VERSION_FFI=3.2.1 \ - VERSION_GLIB=2.49.4 \ - VERSION_XML2=2.9.4 \ - VERSION_GSF=1.14.39 \ - VERSION_EXIF=0.6.21 \ - VERSION_LCMS2=2.8 \ - VERSION_JPEG=1.5.0 \ - VERSION_PNG16=1.6.23 \ - VERSION_WEBP=0.5.1 \ - VERSION_TIFF=4.0.6 \ - VERSION_ORC=0.4.25 \ - VERSION_GDKPIXBUF=2.35.2 \ - VERSION_FREETYPE=2.6.5 \ - VERSION_FONTCONFIG=2.12.0 \ - VERSION_HARFBUZZ=1.3.0 \ - VERSION_PIXMAN=0.34.0 \ - VERSION_CAIRO=1.14.6 \ - VERSION_PANGO=1.40.1 \ - VERSION_CROCO=0.6.11 \ - VERSION_SVG=2.40.16 \ - VERSION_GIF=5.1.4 \ - VERSION_VIPS=8.3.2 - -# Least out-of-sync Sourceforge mirror -ENV SOURCEFORGE_MIRROR=netix - -RUN mkdir ${DEPS}/zlib -RUN curl -Ls http://zlib.net/zlib-${VERSION_ZLIB}.tar.xz | tar xJC ${DEPS}/zlib --strip-components=1 -WORKDIR ${DEPS}/zlib -RUN ./configure --prefix=${TARGET} && make install -RUN rm ${TARGET}/lib/libz.a - -RUN mkdir ${DEPS}/ffi -RUN curl -Ls ftp://sourceware.org/pub/libffi/libffi-${VERSION_FFI}.tar.gz | tar xzC ${DEPS}/ffi --strip-components=1 -WORKDIR ${DEPS}/ffi -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-builddir && make install-strip - -RUN mkdir ${DEPS}/glib -RUN curl -Ls https://download.gnome.org/sources/glib/2.49/glib-${VERSION_GLIB}.tar.xz | tar xJC ${DEPS}/glib --strip-components=1 -WORKDIR ${DEPS}/glib -RUN CFLAGS="${CFLAGS} -Wl,--default-symver" CXXFLAGS="${CXXFLAGS} -Wl,--default-symver" \ - ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --with-pcre=internal && make install-strip - -RUN mkdir ${DEPS}/xml2 -RUN curl -Ls http://xmlsoft.org/sources/libxml2-${VERSION_XML2}.tar.gz | tar xzC ${DEPS}/xml2 --strip-components=1 -WORKDIR ${DEPS}/xml2 -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --without-python --without-debug --without-docbook --without-ftp --without-html --without-legacy \ - --without-pattern --without-push --without-regexps --without-schemas --without-schematron --with-zlib=${TARGET} \ - && make install-strip - -RUN mkdir ${DEPS}/gsf -RUN curl -Ls https://download.gnome.org/sources/libgsf/1.14/libgsf-${VERSION_GSF}.tar.xz | tar xJC ${DEPS}/gsf --strip-components=1 -WORKDIR ${DEPS}/gsf -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/exif -RUN curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/libexif/libexif/${VERSION_EXIF}/libexif-${VERSION_EXIF}.tar.bz2 | tar xjC ${DEPS}/exif --strip-components=1 -WORKDIR ${DEPS}/exif -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/lcms2 -RUN curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/lcms/lcms/${VERSION_LCMS2}/lcms2-${VERSION_LCMS2}.tar.gz | tar xzC ${DEPS}/lcms2 --strip-components=1 -WORKDIR ${DEPS}/lcms2 -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/jpeg -RUN curl -Ls https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${VERSION_JPEG}.tar.gz | tar xzC ${DEPS}/jpeg --strip-components=1 -WORKDIR ${DEPS}/jpeg -RUN autoreconf -fiv && ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --with-jpeg8 --without-turbojpeg && make install-strip - -RUN mkdir ${DEPS}/png16 -RUN curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/libpng/libpng16/${VERSION_PNG16}/libpng-${VERSION_PNG16}.tar.xz | tar xJC ${DEPS}/png16 --strip-components=1 -WORKDIR ${DEPS}/png16 -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/webp -RUN curl -Ls http://downloads.webmproject.org/releases/webp/libwebp-${VERSION_WEBP}.tar.gz | tar xzC ${DEPS}/webp --strip-components=1 -WORKDIR ${DEPS}/webp -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/tiff -RUN curl -Ls http://download.osgeo.org/libtiff/tiff-${VERSION_TIFF}.tar.gz | tar xzC ${DEPS}/tiff --strip-components=1 -WORKDIR ${DEPS}/tiff -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip -RUN rm ${TARGET}/lib/libtiffxx* - -RUN mkdir ${DEPS}/orc -RUN curl -Ls http://gstreamer.freedesktop.org/data/src/orc/orc-${VERSION_ORC}.tar.xz | tar xJC ${DEPS}/orc --strip-components=1 -WORKDIR ${DEPS}/orc -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip -RUN rm ${TARGET}/lib/liborc-test-* - -RUN mkdir ${DEPS}/gdkpixbuf -RUN curl -Ls https://download.gnome.org/sources/gdk-pixbuf/2.35/gdk-pixbuf-${VERSION_GDKPIXBUF}.tar.xz | tar xJC ${DEPS}/gdkpixbuf --strip-components=1 -WORKDIR ${DEPS}/gdkpixbuf -RUN LD_LIBRARY_PATH=${TARGET}/lib ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --disable-introspection --disable-modules --without-libpng --without-libjpeg --without-libtiff --without-gdiplus --with-included-loaders= \ - && make install-strip - -RUN mkdir ${DEPS}/freetype -RUN curl -Ls http://download.savannah.gnu.org/releases/freetype/freetype-${VERSION_FREETYPE}.tar.gz | tar xzC ${DEPS}/freetype --strip-components=1 -WORKDIR ${DEPS}/freetype -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static && make install - -RUN mkdir ${DEPS}/fontconfig -RUN curl -Ls https://www.freedesktop.org/software/fontconfig/release/fontconfig-${VERSION_FONTCONFIG}.tar.bz2 | tar xjC ${DEPS}/fontconfig --strip-components=1 -WORKDIR ${DEPS}/fontconfig -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --enable-libxml2 && make install-strip - -RUN mkdir ${DEPS}/harfbuzz -RUN curl -Ls https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${VERSION_HARFBUZZ}.tar.bz2 | tar xjC ${DEPS}/harfbuzz --strip-components=1 -WORKDIR ${DEPS}/harfbuzz -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/pixman -RUN curl -Ls http://cairographics.org/releases/pixman-${VERSION_PIXMAN}.tar.gz | tar xzC ${DEPS}/pixman --strip-components=1 -WORKDIR ${DEPS}/pixman -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --disable-libpng && make install-strip - -RUN mkdir ${DEPS}/cairo -RUN curl -Ls http://cairographics.org/releases/cairo-${VERSION_CAIRO}.tar.xz | tar xJC ${DEPS}/cairo --strip-components=1 -WORKDIR ${DEPS}/cairo -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --disable-xlib --disable-xcb --disable-quartz --disable-win32 --disable-egl --disable-glx --disable-wgl \ - --disable-script --disable-ps --disable-gobject --disable-trace --disable-interpreter \ - && make install-strip - -RUN mkdir ${DEPS}/pango -RUN curl -Ls https://download.gnome.org/sources/pango/1.40/pango-${VERSION_PANGO}.tar.xz | tar xJC ${DEPS}/pango --strip-components=1 -WORKDIR ${DEPS}/pango -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/croco -RUN curl -Ls https://download.gnome.org/sources/libcroco/0.6/libcroco-${VERSION_CROCO}.tar.xz | tar xJC ${DEPS}/croco --strip-components=1 -WORKDIR ${DEPS}/croco -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/svg -RUN curl -Ls https://download.gnome.org/sources/librsvg/2.40/librsvg-${VERSION_SVG}.tar.xz | tar xJC ${DEPS}/svg --strip-components=1 -WORKDIR ${DEPS}/svg -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --disable-introspection --disable-tools \ - && make install-strip - -RUN mkdir ${DEPS}/gif -RUN curl -Ls http://${SOURCEFORGE_MIRROR}.dl.sourceforge.net/project/giflib/giflib-${VERSION_GIF}.tar.gz | tar xzC ${DEPS}/gif --strip-components=1 -WORKDIR ${DEPS}/gif -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip - -RUN mkdir ${DEPS}/vips -RUN curl -Ls http://www.vips.ecs.soton.ac.uk/supported/8.3/vips-${VERSION_VIPS}.tar.gz | tar xzC ${DEPS}/vips --strip-components=1 -#RUN apt-get install -y swig gobject-introspection gettext glib2.0-dev -#RUN curl -Ls https://github.com/jcupitt/libvips/archive/master.tar.gz | tar xzC ${DEPS}/vips --strip-components=1 -WORKDIR ${DEPS}/vips -#RUN ./bootstrap.sh -RUN ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking \ - --disable-debug --disable-introspection --without-python --without-fftw \ - --without-magick --without-pangoft2 --without-ppm --without-analyze --without-radiance \ - --with-zip-includes=${TARGET}/include --with-zip-libraries=${TARGET}/lib \ - --with-jpeg-includes=${TARGET}/include --with-jpeg-libraries=${TARGET}/lib \ - && make install-strip - -# Remove the old C++ bindings -WORKDIR ${TARGET}/include -RUN rm -rf vips/vipsc++.h vips/vipscpp.h -WORKDIR ${TARGET}/lib -RUN rm -rf pkgconfig .libs *.la libvipsCC* - -# Create JSON file of version numbers -WORKDIR ${TARGET} -RUN echo "{\n\ - \"cairo\": \"${VERSION_CAIRO}\",\n\ - \"croco\": \"${VERSION_CROCO}\",\n\ - \"exif\": \"${VERSION_EXIF}\",\n\ - \"ffi\": \"${VERSION_FFI}\",\n\ - \"fontconfig\": \"${VERSION_FONTCONFIG}\",\n\ - \"freetype\": \"${VERSION_FREETYPE}\",\n\ - \"gdkpixbuf\": \"${VERSION_GDKPIXBUF}\",\n\ - \"gif\": \"${VERSION_GIF}\",\n\ - \"glib\": \"${VERSION_GLIB}\",\n\ - \"gsf\": \"${VERSION_GSF}\",\n\ - \"harfbuzz\": \"${VERSION_HARFBUZZ}\",\n\ - \"jpeg\": \"${VERSION_JPEG}\",\n\ - \"lcms\": \"${VERSION_LCMS2}\",\n\ - \"orc\": \"${VERSION_ORC}\",\n\ - \"pango\": \"${VERSION_PANGO}\",\n\ - \"pixman\": \"${VERSION_PIXMAN}\",\n\ - \"png\": \"${VERSION_PNG16}\",\n\ - \"svg\": \"${VERSION_SVG}\",\n\ - \"tiff\": \"${VERSION_TIFF}\",\n\ - \"vips\": \"${VERSION_VIPS}\",\n\ - \"webp\": \"${VERSION_WEBP}\",\n\ - \"xml\": \"${VERSION_XML2}\",\n\ - \"zlib\": \"${VERSION_ZLIB}\"\n\ -}" >lib/versions.json - -# Create .tar.gz -WORKDIR ${TARGET} -RUN tar czf /libvips-${VERSION_VIPS}-lin.tar.gz include lib -RUN advdef --recompress --shrink-insane /libvips-${VERSION_VIPS}-lin.tar.gz diff --git a/packaging/linux-armv6/Dockerfile b/packaging/linux-armv6/Dockerfile new file mode 100644 index 00000000..70ba745f --- /dev/null +++ b/packaging/linux-armv6/Dockerfile @@ -0,0 +1,15 @@ +FROM socialdefect/raspbian-jessie-core +MAINTAINER Lovell Fuller + +# Create Rasbian-based container suitable for compiling Linux ARMv6 binaries +# Requires the QEMU user mode emulation binaries on the host machine + +# Build dependencies +RUN \ + apt-get update && \ + apt-get install -y build-essential curl autoconf libtool nasm gtk-doc-tools texinfo advancecomp libglib2.0-dev + +# Compiler settings +ENV \ + PLATFORM=linux-armv6 \ + FLAGS="-Os" diff --git a/packaging/linux-armv7/Dockerfile b/packaging/linux-armv7/Dockerfile new file mode 100644 index 00000000..d213fe9b --- /dev/null +++ b/packaging/linux-armv7/Dockerfile @@ -0,0 +1,20 @@ +FROM debian:jessie +MAINTAINER Lovell Fuller + +# Create Debian-based container suitable for cross-compiling Linux ARMv7-A binaries + +# Build dependencies +RUN \ + apt-get update && \ + apt-get install -y curl && \ + echo "deb http://emdebian.org/tools/debian/ jessie main" | tee /etc/apt/sources.list.d/crosstools.list && \ + curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add - && \ + dpkg --add-architecture armhf && \ + apt-get update && \ + apt-get install -y crossbuild-essential-armhf autoconf libtool nasm gtk-doc-tools texinfo advancecomp libglib2.0-dev + +# Compiler settings +ENV \ + PLATFORM=linux-armv7 \ + CHOST=arm-linux-gnueabihf \ + FLAGS="-marm -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -Os" diff --git a/packaging/linux-armv8/Dockerfile b/packaging/linux-armv8/Dockerfile new file mode 100644 index 00000000..56b97a5f --- /dev/null +++ b/packaging/linux-armv8/Dockerfile @@ -0,0 +1,18 @@ +FROM debian:stretch +MAINTAINER Lovell Fuller + +# Create Debian-based container suitable for cross-compiling Linux ARMv8-A binaries + +# Build dependencies +RUN \ + apt-get update && \ + apt-get install -y curl && \ + dpkg --add-architecture arm64 && \ + apt-get update && \ + apt-get install -y crossbuild-essential-arm64 autoconf libtool nasm gtk-doc-tools texinfo advancecomp libglib2.0-dev + +# Compiler settings +ENV \ + PLATFORM=linux-armv8 \ + CHOST=aarch64-linux-gnu \ + FLAGS="-march=armv8-a -Os -D_GLIBCXX_USE_CXX11_ABI=0" diff --git a/packaging/linux-x64/Dockerfile b/packaging/linux-x64/Dockerfile new file mode 100644 index 00000000..877283e5 --- /dev/null +++ b/packaging/linux-x64/Dockerfile @@ -0,0 +1,14 @@ +FROM debian:wheezy +MAINTAINER Lovell Fuller + +# Create Debian-based container suitable for building Linux x64 binaries + +# Build dependencies +RUN \ + apt-get update && \ + apt-get install -y build-essential autoconf libtool nasm gtk-doc-tools texinfo advancecomp + +# Compiler settings +ENV \ + PLATFORM="linux-x64" \ + FLAGS="-O3" diff --git a/packaging/arm-test.sh b/packaging/test-linux-arm.sh similarity index 71% rename from packaging/arm-test.sh rename to packaging/test-linux-arm.sh index 37c83bb5..c887ac87 100755 --- a/packaging/arm-test.sh +++ b/packaging/test-linux-arm.sh @@ -22,7 +22,7 @@ fi export SSHPASS=hypriot echo "Copying sharp source to device" -sshpass -e scp -o PreferredAuthentications=password -r ../../sharp root@${IP}:/root/sharp +sshpass -e scp -o PreferredAuthentications=password -r ../../sharp pirate@${IP}:/home/pirate/sharp echo "Compile and test within container" -sshpass -e ssh -o PreferredAuthentications=password -t root@${IP} "docker run -i -t --rm -v \${PWD}/sharp:/s hypriot/rpi-node:5 sh -c 'cd /s && npm install --unsafe-perm && npm test'" +sshpass -e ssh -o PreferredAuthentications=password -t pirate@${IP} "docker run --rm -v \${PWD}/sharp:/s hypriot/rpi-node:6 sh -c 'cd /s && npm install --unsafe-perm && npm test'" diff --git a/packaging/test.sh b/packaging/test-linux-x64.sh similarity index 91% rename from packaging/test.sh rename to packaging/test-linux-x64.sh index d26385fc..04f4bb40 100755 --- a/packaging/test.sh +++ b/packaging/test-linux-x64.sh @@ -6,7 +6,7 @@ if ! type docker >/dev/null; then exit 1 fi -version_node=4.4.2 +version_node=6.3.0 test="npm run clean; npm install --unsafe-perm; npm test" @@ -43,7 +43,7 @@ fi # Archlinux 2015.06.01 echo "Testing archlinux..." -if docker run -i -t --rm -v $PWD:/v base/archlinux:2015.06.01 >packaging/archlinux.log 2>&1 sh -c "cd /v; ./packaging/test/archlinux.sh; $test"; +if docker run -i -t --rm -v $PWD:/v pritunl/archlinux:latest >packaging/archlinux.log 2>&1 sh -c "cd /v; ./packaging/test/archlinux.sh; $test"; then echo "archlinux OK" else echo "archlinux fail" && cat packaging/archlinux.log fi diff --git a/packaging/win/Dockerfile b/packaging/win/Dockerfile deleted file mode 100644 index bf7b0243..00000000 --- a/packaging/win/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM debian:wheezy -MAINTAINER Lovell Fuller - -RUN apt-get update && apt-get install -y curl zip advancecomp - -ENV VERSION_VIPS=8.3.2 - -# Fetch and unzip -RUN mkdir /vips -WORKDIR /vips -RUN curl -L -O https://github.com/lovell/build-win64/releases/download/v${VERSION_VIPS}/vips-dev-w64-web-${VERSION_VIPS}.zip -RUN unzip vips-dev-w64-web-${VERSION_VIPS}.zip - -# Clean and zip -WORKDIR /vips/vips-dev-8.3 -RUN rm bin/libvipsCC-42.dll bin/libvips-cpp-42.dll bin/libgsf-win32-1-114.dll -RUN cp bin/*.dll lib/ -RUN cp -r lib64/* lib/ - -RUN tar czf /libvips-${VERSION_VIPS}-win.tar.gz include lib/glib-2.0 lib/libvips.lib lib/libglib-2.0.lib lib/libgobject-2.0.lib lib/*.dll -RUN advdef --recompress --shrink-insane /libvips-${VERSION_VIPS}-win.tar.gz diff --git a/packaging/win32-x64/Dockerfile b/packaging/win32-x64/Dockerfile new file mode 100644 index 00000000..a6d44aff --- /dev/null +++ b/packaging/win32-x64/Dockerfile @@ -0,0 +1,8 @@ +FROM debian:jessie +MAINTAINER Lovell Fuller + +# Create Debian-based container suitable for post-processing Windows x64 binaries + +RUN apt-get update && apt-get install -y curl zip advancecomp + +ENV PLATFORM=win32-x64 diff --git a/preinstall.sh b/preinstall.sh index e4ccca30..05e44203 100755 --- a/preinstall.sh +++ b/preinstall.sh @@ -2,6 +2,8 @@ # Use of this script is deprecated +echo +echo "WARNING: This script will stop working at the end of 2016" echo echo "WARNING: This script is no longer required on most 64-bit Linux systems when using sharp v0.12.0+" echo @@ -10,10 +12,11 @@ echo echo "If you really, really need this script, it will attempt" echo "to globally install libvips if not already available." echo +sleep 5 -vips_version_minimum=8.3.1 +vips_version_minimum=8.3.3 vips_version_latest_major_minor=8.3 -vips_version_latest_patch=1 +vips_version_latest_patch=3 openslide_version_minimum=3.4.0 openslide_version_latest_major_minor=3.4