gnu: ghostscript: Switch to Artifex Ghostcript and update to 9.21.

* gnu/packages/ghostscript.scm (ghostscript): Update to 9.21.
[source]: Fetch the source from Artifex.
[native-inputs]: Remove pkg-config.
[inputs]: Add jbig2dec and use libjpeg instead of libjpeg-8.
[arguments]: Add #:configure-flags.
[replacement]: Remove field.
(ghostcript/fixed): Remove variable.
* gnu/packages/patches/ghostscript-CVE-2017-8291.patch,
gnu/packages/patches/ghostscript-runpath.patch: Adjust to new upstream
source.
* gnu/packages/patches/ghostscript-CVE-2013-5653.patch,
gnu/packages/patches/ghostscript-CVE-2015-3228.patch,
gnu/packages/patches/ghostscript-CVE-2016-7976.patch,
gnu/packages/patches/ghostscript-CVE-2016-7978.patch,
gnu/packages/patches/ghostscript-CVE-2016-7979.patch,
gnu/packages/patches/ghostscript-CVE-2016-8602.patch: Delete files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
This commit is contained in:
Leo Famulari 2017-05-29 13:47:39 -04:00
parent baf549df14
commit d6158fe70d
No known key found for this signature in database
GPG key ID: 2646FA30BACA7F08
10 changed files with 240 additions and 532 deletions

View file

@ -129,85 +129,98 @@ printing, and psresize, for adjusting page sizes.")
(define-public ghostscript
(package
(name "ghostscript")
(version "9.14.0")
;; XXX Try removing the bundled copy of jbig2dec.
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-"
version ".tar.xz"))
(sha256
(base32
"0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1"))
(patches (search-patches "ghostscript-CVE-2013-5653.patch"
"ghostscript-CVE-2015-3228.patch"
"ghostscript-CVE-2016-7976.patch"
"ghostscript-CVE-2016-7978.patch"
"ghostscript-CVE-2016-7979.patch"
"ghostscript-CVE-2016-8602.patch"
"ghostscript-CVE-2017-8291.patch"
"ghostscript-runpath.patch"))
(modules '((guix build utils)))
(snippet
;; Honor --docdir.
'(substitute* "Makefile.in"
(("^docdir=.*$") "docdir = @docdir@\n")
(("^exdir=.*$") "exdir = $(docdir)/examples\n")))))
(build-system gnu-build-system)
(outputs '("out" "doc")) ;16 MiB of HTML/PS doc + examples
(inputs `(("freetype" ,freetype)
("lcms" ,lcms)
("libjpeg-8" ,libjpeg-8)
("libpng" ,libpng)
("libpaper" ,libpaper)
("libtiff" ,libtiff)
("zlib" ,zlib)))
(native-inputs
`(("perl" ,perl)
("pkg-config" ,pkg-config) ; needed to find libtiff
("python" ,python-wrapper)
("tcl" ,tcl)))
(arguments
`(#:disallowed-references ("doc")
#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-config-files
(lambda _
(substitute* "base/all-arch.mak"
(("/bin/sh") (which "sh")))
(substitute* "base/unixhead.mak"
(("/bin/sh") (which "sh")))))
(name "ghostscript")
(version "9.21")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/ArtifexSoftware/"
"ghostpdl-downloads/releases/download/gs"
(string-delete #\. version)
"/ghostscript-" version ".tar.xz"))
(sha256
(base32
"0lyhjcrkmd5fcmh8h56bs4xr9k4jasmikv5vsix1hd4ai0ad1q9b"))
(patches (search-patches "ghostscript-runpath.patch"
"ghostscript-CVE-2017-8291.patch"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so
;; we leave it, at least for now.
;; TODO Try unbundling ijs, which is developed alongside Ghostscript.
'(begin
(for-each delete-file-recursively '("freetype" "jbig2dec" "jpeg"
"lcms2" "libpng"
"tiff" "zlib"))))))
(build-system gnu-build-system)
(outputs '("out" "doc")) ;19 MiB of HTML/PS doc + examples
(arguments
`(#:disallowed-references ("doc")
#:configure-flags
(list "--with-system-libtiff"
"LIBS=-lz"
(string-append "ZLIBDIR="
(assoc-ref %build-inputs "zlib") "/include")
"--enable-dynamic")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-doc-dir
(lambda _
;; Honor --docdir.
(substitute* "Makefile.in"
(("^docdir=.*$") "docdir = @docdir@\n")
(("^exdir=.*$") "exdir = $(docdir)/examples\n"))
#t))
(add-after 'configure 'remove-doc-reference
(lambda _
;; Don't retain a reference to the 'doc' output in 'gs'.
;; The only use of this definition is in the output of
;; 'gs --help', so this change is fine.
(substitute* "base/gscdef.c"
(("GS_DOCDIR")
"\"~/.guix-profile/share/doc/ghostscript\""))))
(replace 'build
(lambda _
;; Build 'libgs.so', but don't build the statically-linked 'gs'
;; binary (saves 18 MiB).
(zero? (system* "make" "so" "-j"
(number->string (parallel-job-count))))))
(replace 'install
(lambda _
(zero? (system* "make" "soinstall"))))
(add-after 'install 'create-gs-symlink
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; some programs depend on having a 'gs' binary available
(symlink "gsc" (string-append out "/bin/gs"))))))))
(synopsis "PostScript and PDF interpreter")
(description
"Ghostscript is an interpreter for the PostScript language and the PDF
;; Don't retain a reference to the 'doc' output in 'gs'.
;; The only use of this definition is in the output of
;; 'gs --help', so this change is fine.
(substitute* "base/gscdef.c"
(("GS_DOCDIR")
"\"~/.guix-profile/share/doc/ghostscript\""))
#t))
(add-after 'configure 'patch-config-files
(lambda _
(substitute* "base/unixhead.mak"
(("/bin/sh") (which "sh")))
#t))
(replace 'build
(lambda _
;; Build 'libgs.so', but don't build the statically-linked 'gs'
;; binary (saves 22 MiB).
(zero? (system* "make" "so" "-j"
(number->string (parallel-job-count))))))
(replace 'install
(lambda _
(zero? (system* "make" "soinstall"))))
(add-after 'install 'create-gs-symlink
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; Some programs depend on having a 'gs' binary available.
(symlink "gsc" (string-append out "/bin/gs"))
#t))))))
(native-inputs
`(("perl" ,perl)
("python" ,python-wrapper)
("tcl" ,tcl)))
(inputs
`(("freetype" ,freetype)
("jbig2dec" ,jbig2dec)
("lcms2" ,lcms)
("libjpeg" ,libjpeg)
("libpaper" ,libpaper)
("libpng" ,libpng)
("libtiff" ,libtiff)
("zlib" ,zlib)))
(synopsis "PostScript and PDF interpreter")
(description
"Ghostscript is an interpreter for the PostScript language and the PDF
file format. It also includes a C library that implements the graphics
capabilities of the PostScript language. It supports a wide variety of
output file formats and printers.")
(license license:agpl3+)
(home-page "https://www.gnu.org/software/ghostscript/")
(properties '((upstream-name . "gnu-ghostscript")))))
(home-page "https://www.ghostscript.com/")
(license license:agpl3+)))
(define-public ghostscript/x
(package/inherit ghostscript