mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
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:
parent
baf549df14
commit
d6158fe70d
10 changed files with 240 additions and 532 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue