From 051d022fc20ac4693fe2ba5f58057b6c70918fe0 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Sun, 8 May 2016 15:57:11 +0100 Subject: [PATCH] Upgrade to libvips v8.3.1 Remove packaging tests and therefore support for Centos 6 --- docs/changelog.md | 18 ++++++------ docs/install.md | 6 ++-- package.json | 5 +++- packaging/arm/build.sh | 58 ++++++++++++++++++++++++++++----------- packaging/build.sh | 2 +- packaging/lin/Dockerfile | 2 +- packaging/test.sh | 35 ++++++++++++----------- packaging/test/centos6.sh | 8 ------ packaging/win/Dockerfile | 11 +++----- preinstall.sh | 10 +++---- 10 files changed, 87 insertions(+), 68 deletions(-) delete mode 100755 packaging/test/centos6.sh diff --git a/docs/changelog.md b/docs/changelog.md index 0731a456..c67ebcd2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,23 +2,25 @@ ### v0.15 - "*outfit*" -* Take advantage of libvips 8.3 features. - Add support for libvips' new native loaders, including GIF and SVG. +Requires libvips v8.3.1 + +#### v0.15.0 - TBD + +* Take advantage of libvips v8.3 features. + Add support for libvips' new GIF and SVG loaders. Pre-built binaries now include giflib and librsvg, exclude *magick. Use shrink-on-load for WebP input. Break existing sharpen API to accept sigma and improve precision. [#369](https://github.com/lovell/sharp/issues/369) -### v0.14 - "*needle*" - -Requires libvips v8.2.3 - -#### v0.14.2 - TBD - * Remove unnecessary (un)premultiply operations when not resizing/compositing. [#413](https://github.com/lovell/sharp/issues/413) [@jardakotesovec](https://github.com/jardakotesovec) +### v0.14 - "*needle*" + +Requires libvips v8.2.3 + #### v0.14.1 - 16th April 2016 * Allow removal of limitation on input pixel count via limitInputPixels. Use with care. diff --git a/docs/install.md b/docs/install.md index aa2703db..bd362125 100644 --- a/docs/install.md +++ b/docs/install.md @@ -15,14 +15,14 @@ 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 7MB. +This involves an automated HTTPS download of approximately 6.7MB. 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.04, 15.10, 16.04 +* Ubuntu 12.04, 14.04, 15.10, 16.04 * Centos 7 -* Fedora 21, 22, 23 +* Fedora 22, 23 * openSUSE 13.2 * Archlinux 2015.06.01 * Raspbian Jessie diff --git a/package.json b/package.json index 1877a711..5d5c30ce 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,10 @@ "png", "webp", "tiff", + "gif", + "svg", "dzi", + "image", "resize", "thumbnail", "crop", @@ -73,7 +76,7 @@ }, "license": "Apache-2.0", "config": { - "libvips": "8.3.0" + "libvips": "8.3.1" }, "engines": { "node": ">=0.10" diff --git a/packaging/arm/build.sh b/packaging/arm/build.sh index 3b1e3b1a..ca49a024 100755 --- a/packaging/arm/build.sh +++ b/packaging/arm/build.sh @@ -19,18 +19,27 @@ export CXXFLAGS="-O3" # Dependency version numbers VERSION_ZLIB=1.2.8 VERSION_FFI=3.2.1 -VERSION_GLIB=2.47.6 +VERSION_GLIB=2.48.0 VERSION_XML2=2.9.3 -VERSION_GSF=1.14.34 +VERSION_GSF=1.14.36 VERSION_EXIF=0.6.21 VERSION_LCMS2=2.7 -VERSION_GM=1.3.23 -VERSION_JPEG=1.4.2 +VERSION_JPEG=1.4.90 VERSION_PNG16=1.6.21 VERSION_WEBP=0.5.0 VERSION_TIFF=4.0.6 VERSION_ORC=0.4.25 -VERSION_VIPS=8.2.3 +VERSION_GDKPIXBUF=2.34.0 +VERSION_FREETYPE=2.6.3 +VERSION_FONTCONFIG=2.11.95 +VERSION_HARFBUZZ=1.2.6 +VERSION_PIXMAN=0.34.0 +VERSION_CAIRO=1.14.6 +VERSION_PANGO=1.40.1 +VERSION_CROCO=0.6.11 +VERSION_SVG=2.40.15 +VERSION_GIF=5.1.4 +VERSION_VIPS=8.3.1 mkdir ${DEPS}/zlib curl -Ls http://zlib.net/zlib-${VERSION_ZLIB}.tar.xz | tar xJC ${DEPS}/zlib --strip-components=1 @@ -44,7 +53,7 @@ cd ${DEPS}/ffi ./configure --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.47/glib-${VERSION_GLIB}.tar.xz | tar xJC ${DEPS}/glib --strip-components=1 +curl -Ls https://download.gnome.org/sources/glib/2.48/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 @@ -68,11 +77,6 @@ curl -Ls http://heanet.dl.sourceforge.net/project/lcms/lcms/${VERSION_LCMS2}/lcm cd ${DEPS}/lcms2 ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip -mkdir ${DEPS}/gm -curl -Ls http://heanet.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/${VERSION_GM}/GraphicsMagick-${VERSION_GM}.tar.xz | tar xJC ${DEPS}/gm --strip-components=1 -cd ${DEPS}/gm -./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking --without-magick-plus-plus && make install-strip - mkdir ${DEPS}/jpeg curl -Ls http://heanet.dl.sourceforge.net/project/libjpeg-turbo/${VERSION_JPEG}/libjpeg-turbo-${VERSION_JPEG}.tar.gz | tar xzC ${DEPS}/jpeg --strip-components=1 cd ${DEPS}/jpeg @@ -99,11 +103,24 @@ curl -Ls http://gstreamer.freedesktop.org/data/src/orc/orc-${VERSION_ORC}.tar.xz cd ${DEPS}/orc ./configure --prefix=${TARGET} --enable-shared --disable-static --disable-dependency-tracking && make install-strip +# TODO: +# VERSION_GDKPIXBUF=2.34.0 +# VERSION_FREETYPE=2.6.3 +# VERSION_FONTCONFIG=2.11.95 +# VERSION_HARFBUZZ=1.2.6 +# VERSION_PIXMAN=0.34.0 +# VERSION_CAIRO=1.14.6 +# VERSION_PANGO=1.40.1 +# VERSION_CROCO=0.6.11 +# VERSION_SVG=2.40.15 +# VERSION_GIF=5.1.4 + mkdir ${DEPS}/vips -curl -Ls http://www.vips.ecs.soton.ac.uk/supported/8.2/vips-${VERSION_VIPS}.tar.gz | tar xzC ${DEPS}/vips --strip-components=1 +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 \ - --disable-debug --disable-introspection --without-python --without-fftw --with-magickpackage=GraphicsMagick \ + --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 @@ -117,20 +134,29 @@ rm -rf pkgconfig .libs *.la libvipsCC* # Create JSON file of version numbers cd ${TARGET} 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\ - \"gm\": \"${VERSION_GM}\",\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\ + \"vips\": \"${VERSION_VIPS}\",\n\ \"webp\": \"${VERSION_WEBP}\",\n\ \"xml\": \"${VERSION_XML2}\",\n\ - \"zlib\": \"${VERSION_ZLIB}\",\n\ + \"zlib\": \"${VERSION_ZLIB}\"\n\ }" >lib/versions.json # Create .tar.gz diff --git a/packaging/build.sh b/packaging/build.sh index 9cc4bca4..5b97118f 100755 --- a/packaging/build.sh +++ b/packaging/build.sh @@ -1,6 +1,6 @@ #!/bin/sh -VERSION_VIPS=8.3.0 +VERSION_VIPS=8.3.1 # Is docker available? diff --git a/packaging/lin/Dockerfile b/packaging/lin/Dockerfile index 12206772..1ae6d95b 100644 --- a/packaging/lin/Dockerfile +++ b/packaging/lin/Dockerfile @@ -40,7 +40,7 @@ ENV VERSION_ZLIB=1.2.8 \ VERSION_CROCO=0.6.11 \ VERSION_SVG=2.40.15 \ VERSION_GIF=5.1.4 \ - VERSION_VIPS=8.3.0 + VERSION_VIPS=8.3.1 # Least out-of-sync Sourceforge mirror ENV SOURCEFORGE_MIRROR=netix diff --git a/packaging/test.sh b/packaging/test.sh index ef021366..d26385fc 100755 --- a/packaging/test.sh +++ b/packaging/test.sh @@ -6,34 +6,33 @@ if ! type docker >/dev/null; then exit 1 fi +version_node=4.4.2 + test="npm run clean; npm install --unsafe-perm; npm test" # Debian 7, 8 -# Ubuntu 12.04, 14.04 -for dist in wheezy jessie precise trusty; do +# Ubuntu 14.04 +for dist in wheezy jessie trusty; do echo "Testing $dist..." - if docker run -i -t --rm -v $PWD:/v -e "NODE_ENV=development" nodesource/$dist:0.12 >packaging/$dist.log 2>&1 sh -c "cd /v; ./packaging/test/debian.sh; $test"; + if docker run -i -t --rm -v $PWD:/v -e "NODE_ENV=development" nodesource/$dist:$version_node >packaging/$dist.log 2>&1 sh -c "cd /v; ./packaging/test/debian.sh; $test"; then echo "$dist OK" else echo "$dist fail" && cat packaging/$dist.log fi done -# Centos 6 -echo "Testing centos6..." -if docker run -i -t --rm -v $PWD:/v -e "NODE_ENV=development" nodesource/centos6:0.12 >packaging/centos6.log 2>&1 sh -c "cd /v; source ./packaging/test/centos6.sh; ./preinstall.sh; $test"; -then echo "centos6 OK" -else echo "centos6 fail" && cat packaging/centos6.log -fi - # Centos 7 -# Fedora 20, 21 -for dist in centos7 fedora20 fedora21; do - echo "Testing $dist..." - if docker run -i -t --rm -v $PWD:/v -e "NODE_ENV=development" nodesource/$dist:0.12 >packaging/$dist.log 2>&1 sh -c "cd /v; $test"; - then echo "$dist OK" - else echo "$dist fail" && cat packaging/$dist.log - fi -done +echo "Testing centos7..." +if docker run -i -t --rm -v $PWD:/v -e "NODE_ENV=development" nodesource/centos7:$version_node >packaging/$dist.log 2>&1 sh -c "cd /v; $test"; +then echo "$dist OK" +else echo "$dist fail" && cat packaging/$dist.log +fi + +# Fedora 22 +echo "Testing fedora22..." +if docker run -i -t --rm -v $PWD:/v -e "NODE_ENV=development" nodesource/fedora22:$version_node >packaging/$dist.log 2>&1 sh -c "cd /v; $test"; +then echo "$dist OK" +else echo "$dist fail" && cat packaging/$dist.log +fi # openSUSE 13.2 echo "Testing opensuse..." diff --git a/packaging/test/centos6.sh b/packaging/test/centos6.sh deleted file mode 100755 index ebe66857..00000000 --- a/packaging/test/centos6.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# Install C++11 compatible version of g++ on Centos 6 -curl -o /etc/yum.repos.d/devtools-1.1.repo http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo -yum install -y devtoolset-1.1 -export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc -export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp -export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++ diff --git a/packaging/win/Dockerfile b/packaging/win/Dockerfile index a63e4abb..9b046559 100644 --- a/packaging/win/Dockerfile +++ b/packaging/win/Dockerfile @@ -1,15 +1,15 @@ -FROM ubuntu:precise +FROM debian:wheezy MAINTAINER Lovell Fuller RUN apt-get update && apt-get install -y curl zip -ENV VERSION_VIPS=8.3.0 +ENV VERSION_VIPS=8.3.1 # 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-8.3.zip -RUN unzip vips-dev-w64-web-8.3.zip +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 @@ -17,7 +17,4 @@ 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/ -# Patch VImage8.h for MSVC support, can be removed with libvips v8.3.1+ -RUN curl -o include/vips/VImage8.h https://raw.githubusercontent.com/jcupitt/libvips/baa175c4c0f99201d436edd035d58bbb3471e489/cplusplus/include/vips/VImage8.h - RUN GZIP=-9 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 diff --git a/preinstall.sh b/preinstall.sh index fa157959..747b5b83 100755 --- a/preinstall.sh +++ b/preinstall.sh @@ -11,7 +11,7 @@ # Supports: # * Debian Linux # * Debian 7, 8 -# * Ubuntu 12.04, 14.04, 14.10, 15.04, 15.10 +# * Ubuntu 12.04, 14.04, 15.10, 16.04 # * Mint 13, 17 # * Elementary 0.3 # * Red Hat Linux @@ -20,9 +20,9 @@ # * Amazon Linux 2015.03, 2015.09 # * OpenSuse 13 -vips_version_minimum=8.2.3 -vips_version_latest_major_minor=8.2 -vips_version_latest_patch=3 +vips_version_minimum=8.3.1 +vips_version_latest_major_minor=8.3 +vips_version_latest_patch=1 openslide_version_minimum=3.4.0 openslide_version_latest_major_minor=3.4 @@ -139,7 +139,7 @@ if [ $enable_openslide -eq 1 ] && [ -z $vips_with_openslide ] && [ $openslide_ex DISTRO=$(lsb_release -c -s) echo "Detected Debian Linux '$DISTRO'" case "$DISTRO" in - jessie|vivid|wily) + jessie|vivid|wily|xenial) # Debian 8, Ubuntu 15 echo "Installing libopenslide via apt-get" apt-get install -y libopenslide-dev