diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index acab1694..cbf14c19 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,16 +6,10 @@ Hello, thank you for your interest in helping! Please create a [new issue](https://github.com/lovell/sharp/issues/new) containing the steps to reproduce the problem. +If you're having installation problems, please include the output of running `npm install --verbose sharp`. + New bugs are assigned a `triage` label whilst under investigation. -If you're having problems with `npm install sharp`, please include the output of the following commands, perhaps as a [gist](https://gist.github.com/): - -```sh -vips -v -pkg-config --print-provides vips -npm install --verbose sharp -``` - ## Submit a new feature request If a [similar request](https://github.com/lovell/sharp/labels/enhancement) exists, it's probably fastest to add a comment to it about your requirement. @@ -84,6 +78,15 @@ Requires [Valgrind](http://valgrind.org/). npm run test-leak ``` +### Packaging tests + +Tests the installation on a number of Linux-based operating systems. +Requires docker. + +```sh +npm run test-packaging +``` + ## Finally Please feel free to ask any questions via a [new issue](https://github.com/lovell/sharp/issues/new) or contact me by [e-mail](https://github.com/lovell/sharp/blob/master/package.json#L4). diff --git a/README.md b/README.md index efcb9089..01814b42 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ The typical use case for this high speed Node.js module is to convert large images of many formats to smaller, web-friendly JPEG, PNG and WebP images of varying dimensions. +`npm install sharp` + +A pre-built version of libvips is provided for Windows and most Linux systems. + +Installation of libvips on OS X is as simple as `brew install homebrew/science/vips`. + [![Test Coverage](https://coveralls.io/repos/lovell/sharp/badge.png?branch=master)](https://coveralls.io/r/lovell/sharp?branch=master) ### Documentation diff --git a/docs/install.md b/docs/install.md index c808c55e..cff1ff4b 100644 --- a/docs/install.md +++ b/docs/install.md @@ -6,72 +6,41 @@ npm install sharp ### Prerequisites -* Node.js v0.10+ or io.js -* [libvips](https://github.com/jcupitt/libvips) v7.40.0+ (8.1.1+ recommended) -* C++11 compatible compiler such as gcc 4.6+, clang 3.0+ or MSVC 2013 (Node v4+ requires gcc 4.8+) +* C++11 compatible compiler such as gcc 4.6+ (Node v4+ requires gcc 4.8+), clang 3.0+ or MSVC 2013 +* [node-gyp](https://github.com/TooTallNate/node-gyp#installation) ### Linux -[![Ubuntu 12.04 Build Status](https://travis-ci.org/lovell/sharp.png?branch=master)](https://travis-ci.org/lovell/sharp) -[![Centos 6.5 Build Status](https://snap-ci.com/lovell/sharp/branch/master/build_image)](https://snap-ci.com/lovell/sharp/branch/master) +[![Ubuntu 14.04 Build Status](https://travis-ci.org/lovell/sharp.png?branch=master)](https://travis-ci.org/lovell/sharp) -For a system-wide installation of the most suitable version of -libvips and its dependencies on the following Operating Systems: +libvips and its dependencies are fetched and stored within `node_modules/sharp` during `npm install`. +This involves an automated HTTPS download of approximately 6MB. -* Debian 7, 8 +Most recent 64-bit Linux-based operating systems should "just work", e.g.: + +* Debian 8 * Ubuntu 12.04, 14.04, 14.10, 15.04, 15.10 -* Mint 13, 17 -* Elementary 0.3 -* RHEL/Centos/Scientific 6, 7 -* Fedora 21, 22 -* Amazon Linux 2015.03, 2015.09 -* OpenSuse 13 +* Centos 7 +* Fedora 20, 21 +* openSUSE 13.2 +* Archlinux 2015.06.01 -run the following as a user with `sudo` access: +For older and 32-bit Linux-based operating systems, +a system-wide installation of the most suitable version of +libvips and its dependencies can be achieved by running +the following command as a user with `sudo` access +(requires `curl` and `pkg-config`): ```sh curl -s https://raw.githubusercontent.com/lovell/sharp/master/preinstall.sh | sudo bash - ``` -or run the following as `root`: - -```sh -curl -s https://raw.githubusercontent.com/lovell/sharp/master/preinstall.sh | bash - -``` - -The [preinstall.sh](https://github.com/lovell/sharp/blob/master/preinstall.sh) script requires `curl` and `pkg-config`. - -Add `--with-openslide` to enable OpenSlide support: - -```sh -curl -s https://raw.githubusercontent.com/lovell/sharp/master/preinstall.sh | sudo bash -s -- --with-openslide -``` - -#### Ubuntu LTS - -libvips v7.40.6 is available via a PPA. - -##### 12.04 - -```sh -sudo add-apt-repository -y ppa:lovell/precise-backport-vips -sudo apt-get update -sudo apt-get install -y libvips-dev libgsf-1-dev -``` - -##### 14.04 - -```sh -sudo add-apt-repository -y ppa:lovell/trusty-backport-vips -sudo apt-get update -sudo apt-get install -y libvips-dev libgsf-1-dev -``` - ### Mac OS [![OS X 10.9.5 Build Status](https://travis-ci.org/lovell/sharp-osx-ci.png?branch=master)](https://travis-ci.org/lovell/sharp-osx-ci) -Install libvips via homebrew: +libvips must be installed before `npm install` is run. +This can be achieved via homebrew: ```sh brew install homebrew/science/vips --with-webp --with-graphicsmagick @@ -89,18 +58,13 @@ If so, please try `brew link gettext --force`. ### Windows -[![Windows Server 2012 Build Status](https://ci.appveyor.com/api/projects/status/pgtul704nkhhg6sg)](https://ci.appveyor.com/project/lovell/sharp) +[![Windows x64 Build Status](https://ci.appveyor.com/api/projects/status/pgtul704nkhhg6sg)](https://ci.appveyor.com/project/lovell/sharp) -Requires x86 32-bit Node.js or io.js (use `iojs.exe` rather than `node.exe`). +libvips and its dependencies are fetched and stored within `node_modules\sharp` during `npm install`. +This involves an automated HTTPS download of approximately 11MB. -The WebP format is currently unsupported. - -1. Ensure the [node-gyp prerequisites](https://github.com/TooTallNate/node-gyp#installation) are met. -2. [Download](http://www.vips.ecs.soton.ac.uk/supported/current/win32/) and unzip `vips-dev.x.y.z.zip`. -3. Set the `VIPS_HOME` environment variable to the full path of the `vips-dev-x.y.z` directory. -4. Add `vips-dev-x.y.z\bin` to `PATH`. - -Versions of MSVC more recent than 2013 may require the use of `npm install --arch=ia32 --msvs_version=2013`. +Only 64-bit (x64) `node.exe` is supported. +The WebP format is currently unavailable on Windows. ### Heroku @@ -110,13 +74,20 @@ and its dependencies. ### Docker -[Marc Bachmann](https://github.com/marcbachmann) maintains a -[Dockerfile for libvips](https://github.com/marcbachmann/dockerfile-libvips). +[Marc Bachmann](https://github.com/marcbachmann) maintains an +[Ubuntu-based Dockerfile for libvips](https://github.com/marcbachmann/dockerfile-libvips). ```sh docker pull marcbachmann/libvips ``` +[Will Jordan](https://github.com/wjordan) maintains an +[Alpine-based Dockerfile for libvips](https://github.com/wjordan/dockerfile-libvips). + +```sh +docker pull wjordan/libvips +``` + ### Build tools * [gulp-responsive](https://www.npmjs.com/package/gulp-responsive) diff --git a/packaging/test.sh b/packaging/test.sh index 10db2adf..82f4a3b1 100755 --- a/packaging/test.sh +++ b/packaging/test.sh @@ -34,7 +34,6 @@ fi # Centos 7 # Fedora 20, 21 - for dist in centos7 fedora20 fedora21; do echo -n "Testing $dist... " if docker run -i -t --rm -v $PWD:/v nodesource/$dist:0.12 sh -c "cd /v && $test" >/dev/null; @@ -45,14 +44,14 @@ done # openSUSE 13.2 echo -n "Testing opensuse... " -docker run -i -t --rm -v $PWD:/v opensuse:13.2 sh -c "cd /v && ./packaging/test/opensuse.sh && $test" >/dev/null; +if docker run -i -t --rm -v $PWD:/v opensuse:13.2 sh -c "cd /v && ./packaging/test/opensuse.sh && $test" >/dev/null; then echo "OK" else echo "fail" fi # Archlinux 2015.06.01 echo -n "Testing archlinux... " -docker run -i -t --rm -v $PWD:/v base/archlinux:2015.06.01 sh -c "cd /v && ./packaging/test/archlinux.sh && $test" >/dev/null; +if docker run -i -t --rm -v $PWD:/v base/archlinux:2015.06.01 sh -c "cd /v && ./packaging/test/archlinux.sh && $test" >/dev/null; then echo "OK" else echo "fail" fi