summaryrefslogtreecommitdiff
path: root/gnu/packages/ghostscript.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ghostscript.scm')
-rw-r--r--gnu/packages/ghostscript.scm161
1 files changed, 87 insertions, 74 deletions
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 3a24580b77..ffe6e018bd 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -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")))))
- (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
+ (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 _
- ;; 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
+ ;; Honor --docdir.
+ (substitute* "Makefile.in"
+ (("^docdir=.*$") "docdir = @docdir@\n")
+ (("^exdir=.*$") "exdir = $(docdir)/examples\n"))
+ #t))
+ (add-after 'configure 'remove-doc-reference
(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