diff --git a/docs/changelog.md b/docs/changelog.md index 8169869c..c064ae7f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -17,6 +17,9 @@ Requires libvips v8.6.1. * Ensure vendor platform mismatch throws error at install time. [#1303](https://github.com/lovell/sharp/issues/1303) +* Improve install time error messages for FreeBSD users. + [#1310](https://github.com/lovell/sharp/issues/1310) + #### v0.20.5 - 27th June 2018 * Expose libjpeg optimize_coding flag. diff --git a/install/libvips.js b/install/libvips.js index 464d7f71..0a50f52f 100644 --- a/install/libvips.js +++ b/install/libvips.js @@ -29,11 +29,15 @@ try { } else { // Is this arch/platform supported? const arch = process.env.npm_config_arch || process.arch; - if (platform() === 'win32-ia32') { + const platformAndArch = platform(); + if (platformAndArch === 'win32-ia32') { throw new Error('Windows x86 (32-bit) node.exe is not supported'); } if (arch === 'ia32') { - throw new Error(`Intel Architecture 32-bit systems require manual installation of libvips >= ${minimumLibvipsVersion}\n`); + throw new Error(`Intel Architecture 32-bit systems require manual installation of libvips >= ${minimumLibvipsVersion}`); + } + if (platformAndArch === 'freebsd-x64') { + throw new Error(`FreeBSD systems require manual installation of libvips >= ${minimumLibvipsVersion}`); } if (detectLibc.isNonGlibcLinux) { throw new Error(`Use with ${detectLibc.family} libc requires manual installation of libvips >= ${minimumLibvipsVersion}`); @@ -42,7 +46,7 @@ try { throw new Error(`Use with glibc version ${detectLibc.version} requires manual installation of libvips >= ${minimumLibvipsVersion}`); } // Download to per-process temporary file - const tarFilename = ['libvips', minimumLibvipsVersion, platform()].join('-') + '.tar.gz'; + const tarFilename = ['libvips', minimumLibvipsVersion, platformAndArch].join('-') + '.tar.gz'; const tarPathTemp = path.join(os.tmpdir(), `${process.pid}-${tarFilename}`); const tmpFile = fs.createWriteStream(tarPathTemp); const url = distBaseUrl + tarFilename;