2018-07-21 02:44:44 +02:00
|
|
|
{ stdenv, lib, fetchurl, pkgconfig, zlib, expat, openssl, autoconf
|
2018-09-04 18:50:15 +02:00
|
|
|
, libjpeg, libpng, libtiff, freetype, fontconfig, libpaper, jbig2dec
|
2016-01-13 17:47:07 +01:00
|
|
|
, libiconv, ijs
|
2015-09-15 11:13:22 +02:00
|
|
|
, x11Support ? false, xlibsWrapper ? null
|
2009-01-17 14:08:51 +01:00
|
|
|
, cupsSupport ? false, cups ? null
|
2005-08-30 15:50:14 +02:00
|
|
|
}:
|
|
|
|
|
2015-09-15 11:13:22 +02:00
|
|
|
assert x11Support -> xlibsWrapper != null;
|
2009-01-17 14:08:51 +01:00
|
|
|
assert cupsSupport -> cups != null;
|
2015-07-26 15:50:59 +02:00
|
|
|
let
|
2017-12-09 17:46:50 +01:00
|
|
|
version = "9.${ver_min}";
|
ghostscript: 9.24 -> 9.25 (#47934)
Highlights in this release include:
This release fixes problems with argument handling, some unintended results of the security fixes to the SAFER file access restrictions (specifically accessing ICC profile files), and some additional security issues over the recent 9.24 release.
CVE-2018-16802
CVE-2018-17183
Note: The ps2epsi utility does not, and cannot call Ghostscript with the -dSAFER command line option. It should never be called with input from untrusted sources.
Security issues have been the primary focus of this release, including solving several (well publicised) real and potential exploits.
PLEASE NOTE: We strongly urge users to upgrade to this latest release to avoid these issues.
As well as Ghostscript itself, jbig2dec has had a significant amount of work improving its robustness in the face of out specification files.
IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and cannot be made thread safe without breaking the ABI. Our fork will be thread safe, and include performance enhancements (these changes have all be been offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2 for a time, but not in perpetuity. Our fork will be available as its own package separately from Ghostscript (and MuPDF).
The usual round of bug fixes, compatibility changes, and incremental improvements.
2018-10-06 00:47:08 +02:00
|
|
|
ver_min = "25";
|
2018-09-04 18:06:47 +02:00
|
|
|
# ghostscript*.tar.xz in https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9xx/SHA512SUMS
|
|
|
|
sha512 = "dcbeeb5d3dd5ccaf949dc4be68363c50b1d35e647be4790a50b1bbf5f259f1d9181f705be27bfca708c4d270f945ff4b24e3db10b57800c1ee0ea7a40931c547";
|
2015-07-26 15:50:59 +02:00
|
|
|
|
|
|
|
fonts = stdenv.mkDerivation {
|
|
|
|
name = "ghostscript-fonts";
|
|
|
|
|
|
|
|
srcs = [
|
|
|
|
(fetchurl {
|
|
|
|
url = "mirror://sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz";
|
|
|
|
sha256 = "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = "mirror://gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz";
|
|
|
|
sha256 = "1cxaah3r52qq152bbkiyj2f7dx1rf38vsihlhjmrvzlr8v6cqil1";
|
|
|
|
})
|
|
|
|
# ... add other fonts here
|
|
|
|
];
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
mkdir "$out"
|
|
|
|
mv -v * "$out/"
|
|
|
|
'';
|
|
|
|
};
|
2005-04-29 15:23:15 +02:00
|
|
|
|
2015-07-26 15:50:59 +02:00
|
|
|
in
|
2014-11-05 03:26:53 +01:00
|
|
|
stdenv.mkDerivation rec {
|
2015-07-26 15:50:59 +02:00
|
|
|
name = "ghostscript-${version}";
|
2011-05-24 17:35:38 +02:00
|
|
|
|
2014-11-05 03:26:53 +01:00
|
|
|
src = fetchurl {
|
2017-12-09 17:46:50 +01:00
|
|
|
url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9${ver_min}/${name}.tar.xz";
|
2018-09-04 18:06:47 +02:00
|
|
|
inherit sha512;
|
2011-05-24 17:35:38 +02:00
|
|
|
};
|
|
|
|
|
2018-09-04 18:50:15 +02:00
|
|
|
patches = [
|
2018-09-06 23:52:39 +02:00
|
|
|
./icc-profile-validation.patch
|
2018-09-04 18:50:15 +02:00
|
|
|
./urw-font-files.patch
|
|
|
|
./doc-no-ref.diff
|
|
|
|
];
|
|
|
|
|
2017-07-11 10:53:41 +02:00
|
|
|
outputs = [ "out" "man" "doc" ];
|
2005-04-29 15:23:15 +02:00
|
|
|
|
2013-09-26 17:00:12 +02:00
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
2016-01-13 17:47:07 +01:00
|
|
|
nativeBuildInputs = [ pkgconfig autoconf ];
|
2013-09-26 17:00:12 +02:00
|
|
|
buildInputs =
|
2016-01-13 17:47:07 +01:00
|
|
|
[ zlib expat openssl
|
2018-09-04 18:50:15 +02:00
|
|
|
libjpeg libpng libtiff freetype fontconfig libpaper jbig2dec
|
2016-01-13 17:47:07 +01:00
|
|
|
libiconv ijs
|
2013-09-26 17:00:12 +02:00
|
|
|
]
|
2016-02-02 14:52:03 +01:00
|
|
|
++ lib.optional x11Support xlibsWrapper
|
|
|
|
++ lib.optional cupsSupport cups
|
2013-01-29 16:40:26 +01:00
|
|
|
;
|
2018-09-04 18:50:15 +02:00
|
|
|
# No lcms2; upstream "is in process of forking it" and thus won't use one from a library.
|
2012-01-03 18:50:10 +01:00
|
|
|
|
2015-07-26 15:50:59 +02:00
|
|
|
preConfigure = ''
|
2016-01-13 17:47:07 +01:00
|
|
|
# requires in-tree (heavily patched) openjpeg
|
|
|
|
rm -rf jpeg libpng zlib jasper expat tiff lcms{,2} jbig2dec freetype cups/libs ijs
|
2015-07-26 15:50:59 +02:00
|
|
|
|
|
|
|
sed "s@if ( test -f \$(INCLUDE)[^ ]* )@if ( true )@; s@INCLUDE=/usr/include@INCLUDE=/no-such-path@" -i base/unix-aux.mak
|
2016-04-16 19:50:01 +02:00
|
|
|
sed "s@^ZLIBDIR=.*@ZLIBDIR=${zlib.dev}/include@" -i configure.ac
|
2016-01-13 17:47:07 +01:00
|
|
|
|
|
|
|
autoconf
|
2016-02-02 14:52:03 +01:00
|
|
|
'' + lib.optionalString cupsSupport ''
|
|
|
|
configureFlags="$configureFlags --with-cups-serverbin=$out/lib/cups --with-cups-serverroot=$out/etc/cups --with-cups-datadir=$out/share/cups"
|
2015-07-26 15:50:59 +02:00
|
|
|
'';
|
|
|
|
|
2013-09-26 17:00:12 +02:00
|
|
|
configureFlags =
|
2015-07-26 15:50:59 +02:00
|
|
|
[ "--with-system-libtiff"
|
2014-11-05 03:26:53 +01:00
|
|
|
"--enable-dynamic"
|
2016-02-02 14:52:03 +01:00
|
|
|
] ++ lib.optional x11Support "--with-x"
|
|
|
|
++ lib.optional cupsSupport "--enable-cups";
|
2008-07-17 21:37:18 +02:00
|
|
|
|
|
|
|
doCheck = true;
|
2012-01-03 18:50:10 +01:00
|
|
|
|
2015-07-26 15:50:59 +02:00
|
|
|
# don't build/install statically linked bin/gs
|
2016-02-02 14:52:03 +01:00
|
|
|
buildFlags = [ "so" ];
|
|
|
|
installTargets = [ "soinstall" ];
|
2014-11-05 03:26:53 +01:00
|
|
|
|
2012-01-03 18:50:10 +01:00
|
|
|
postInstall = ''
|
2015-07-26 15:50:59 +02:00
|
|
|
ln -s gsc "$out"/bin/gs
|
|
|
|
|
2016-02-02 14:52:03 +01:00
|
|
|
cp -r Resource "$out/share/ghostscript/${version}"
|
|
|
|
|
2018-09-04 18:06:47 +02:00
|
|
|
mkdir -p "$doc/share/doc/ghostscript"
|
ghostscript: 9.24 -> 9.25 (#47934)
Highlights in this release include:
This release fixes problems with argument handling, some unintended results of the security fixes to the SAFER file access restrictions (specifically accessing ICC profile files), and some additional security issues over the recent 9.24 release.
CVE-2018-16802
CVE-2018-17183
Note: The ps2epsi utility does not, and cannot call Ghostscript with the -dSAFER command line option. It should never be called with input from untrusted sources.
Security issues have been the primary focus of this release, including solving several (well publicised) real and potential exploits.
PLEASE NOTE: We strongly urge users to upgrade to this latest release to avoid these issues.
As well as Ghostscript itself, jbig2dec has had a significant amount of work improving its robustness in the face of out specification files.
IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and cannot be made thread safe without breaking the ABI. Our fork will be thread safe, and include performance enhancements (these changes have all be been offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2 for a time, but not in perpetuity. Our fork will be available as its own package separately from Ghostscript (and MuPDF).
The usual round of bug fixes, compatibility changes, and incremental improvements.
2018-10-06 00:47:08 +02:00
|
|
|
# docs are still built into 9.24
|
|
|
|
mv "$doc/share/doc/9.24" "$doc/share/doc/ghostscript/${version}"
|
2014-11-05 03:26:53 +01:00
|
|
|
|
2015-07-26 15:50:59 +02:00
|
|
|
ln -s "${fonts}" "$out/share/ghostscript/fonts"
|
2017-02-16 19:32:39 +01:00
|
|
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
|
|
|
for file in $out/lib/*.dylib* ; do
|
|
|
|
install_name_tool -id "$file" $file
|
|
|
|
done
|
2012-01-03 18:50:10 +01:00
|
|
|
'';
|
2014-11-05 03:26:53 +01:00
|
|
|
|
2016-02-02 14:52:03 +01:00
|
|
|
preFixup = lib.optionalString stdenv.isDarwin ''
|
2016-01-05 16:04:33 +01:00
|
|
|
install_name_tool -change libgs.dylib.${version} $out/lib/libgs.dylib.${version} $out/bin/gs
|
|
|
|
'';
|
|
|
|
|
2016-04-30 02:00:09 +02:00
|
|
|
passthru = { inherit version; };
|
|
|
|
|
2014-11-05 03:26:53 +01:00
|
|
|
meta = {
|
2017-08-02 23:50:51 +02:00
|
|
|
homepage = https://www.ghostscript.com/;
|
2014-11-05 03:26:53 +01:00
|
|
|
description = "PostScript interpreter (mainline version)";
|
|
|
|
|
|
|
|
longDescription = ''
|
|
|
|
Ghostscript is the name of a set of tools that provides (i) an
|
|
|
|
interpreter for the PostScript language and the PDF file format,
|
|
|
|
(ii) a set of C procedures (the Ghostscript library) that
|
|
|
|
implement the graphics capabilities that appear as primitive
|
|
|
|
operations in the PostScript language, and (iii) a wide variety
|
|
|
|
of output drivers for various file formats and printers.
|
|
|
|
'';
|
|
|
|
|
2017-12-09 17:46:50 +01:00
|
|
|
license = stdenv.lib.licenses.agpl3;
|
2014-11-05 03:26:53 +01:00
|
|
|
|
|
|
|
platforms = stdenv.lib.platforms.all;
|
|
|
|
maintainers = [ stdenv.lib.maintainers.viric ];
|
|
|
|
};
|
2005-04-29 15:23:15 +02:00
|
|
|
}
|