projects/guix·blob version-0.11.0 · refs

340 lines · 13.2 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Andreas Enge <[email protected]>
3;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]>
4;;; Copyright © 2015 Ricardo Wurmus <[email protected]>
5;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <[email protected]>
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages ghostscript)
23 #:use-module (gnu packages)
24 #:use-module (gnu packages autotools)
25 #:use-module (gnu packages compression)
26 #:use-module (gnu packages fontutils)
27 #:use-module (gnu packages image)
28 #:use-module (gnu packages perl)
29 #:use-module (gnu packages pkg-config)
30 #:use-module (gnu packages python)
31 #:use-module (gnu packages tcl)
32 #:use-module (gnu packages xorg)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (guix packages)
35 #:use-module (guix download)
36 #:use-module (guix build-system gnu)
37 #:use-module (guix build-system trivial))
38
39(define-public lcms
40 (package
41 (name "lcms")
42 (version "2.6")
43 (source (origin
44 (method url-fetch)
45 (uri (string-append "mirror://sourceforge/lcms/lcms/" version
46 "/lcms2-" version ".tar.gz"))
47 (sha256 (base32
48 "1c8lgq8gfs3nyplvbx9k8wzfj6r2bqi3f611vb1m8z3476454wji"))))
49 (build-system gnu-build-system)
50 (inputs `(("libjpeg-8" ,libjpeg-8)
51 ("libtiff" ,libtiff)
52 ("zlib" ,zlib)))
53 (synopsis "Little CMS, a small-footprint colour management engine")
54 (description
55 "Little CMS is a small-footprint colour management engine, with special
56focus on accuracy and performance. It uses the International Color
57Consortium standard (ICC), approved as ISO 15076-1.")
58 (license license:x11)
59 (home-page "http://www.littlecms.com/")))
60
61(define-public libpaper
62 (package
63 (name "libpaper")
64 (version "1.1.24")
65 (source (origin
66 (method url-fetch)
67 (uri (string-append
68 ;; Debian moved their libpaper-1.1.24 to archive.debian.net
69 ;; but in the move the hash of their tarball changed.
70 "http://pkgs.fedoraproject.org/repo/pkgs/libpaper/libpaper_"
71 version ".tar.gz/5bc87d494ba470aba54f6d2d51471834/libpaper_"
72 version ".tar.gz"))
73 (sha256 (base32
74 "0zhcx67afb6b5r936w5jmaydj3ks8zh83n9rm5sv3m3k8q8jib1q"))))
75 (build-system gnu-build-system)
76 (synopsis "Library for handling paper sizes")
77 (description
78 "The paper library and accompanying files are intended to provide a simple
79way for applications to take actions based on a system- or user-specified
80paper size.")
81 (license license:gpl2)
82 (home-page "https://packages.qa.debian.org/libp/libpaper.html")))
83
84(define-public psutils
85 (package
86 (name "psutils")
87 (version "17")
88 (source (origin
89 (method url-fetch)
90 (uri "ftp://ftp.knackered.org/pub/psutils/psutils.tar.gz")
91 (sha256 (base32
92 "1r4ab1fvgganm02kmm70b2r1azwzbav2am41gbigpa2bb1wynlrq"))))
93 (build-system gnu-build-system)
94 (inputs `(("perl" ,perl)))
95 (arguments
96 `(#:tests? #f ; none provided
97 #:phases
98 (alist-replace
99 'configure
100 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
101 (let ((perl (assoc-ref inputs "perl"))
102 (out (assoc-ref outputs "out")))
103 (copy-file "Makefile.unix" "Makefile")
104 (substitute* "Makefile"
105 (("/usr/local/bin/perl") (string-append perl "/bin/perl")))
106 (substitute* "Makefile"
107 (("/usr/local") out))
108 ;; for the install phase
109 (substitute* "Makefile"
110 (("-mkdir") "mkdir -p"))
111 ;; drop installation of non-free files
112 (substitute* "Makefile"
113 ((" install.include") ""))))
114 %standard-phases)))
115 (synopsis "Collection of utilities for manipulating PostScript documents")
116 (description
117 "PSUtils is a collection of utilities for manipulating PostScript
118documents. Programs included are psnup, for placing out several logical pages
119on a single sheet of paper, psselect, for selecting pages from a document,
120pstops, for general imposition, psbook, for signature generation for booklet
121printing, and psresize, for adjusting page sizes.")
122 (license (license:non-copyleft "file://LICENSE"
123 "See LICENSE in the distribution."))
124 (home-page "http://knackered.org/angus/psutils/")))
125
126(define-public ghostscript
127 (package
128 (name "ghostscript")
129 (version "9.14.0")
130 (source (origin
131 (method url-fetch)
132 (uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-"
133 version ".tar.xz"))
134 (sha256
135 (base32
136 "0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1"))
137 (patches (search-patches "ghostscript-CVE-2015-3228.patch"
138 "ghostscript-runpath.patch"))
139 (modules '((guix build utils)))
140 (snippet
141 ;; Honor --docdir.
142 '(substitute* "Makefile.in"
143 (("^docdir=.*$") "docdir = @docdir@\n")
144 (("^exdir=.*$") "exdir = $(docdir)/examples\n")))))
145 (build-system gnu-build-system)
146 (outputs '("out" "doc")) ;16 MiB of HTML/PS doc + examples
147 (inputs `(("freetype" ,freetype)
148 ("lcms" ,lcms)
149 ("libjpeg-8" ,libjpeg-8)
150 ("libpng" ,libpng)
151 ("libpaper" ,libpaper)
152 ("libtiff" ,libtiff)
153 ("zlib" ,zlib)))
154 (native-inputs
155 `(("perl" ,perl)
156 ("pkg-config" ,pkg-config) ; needed to find libtiff
157 ("python" ,python-wrapper)
158 ("tcl" ,tcl)))
159 (arguments
160 `(#:disallowed-references ("doc")
161 #:phases
162 (modify-phases %standard-phases
163 (add-after 'configure 'patch-config-files
164 (lambda _
165 (substitute* "base/all-arch.mak"
166 (("/bin/sh") (which "bash")))
167 (substitute* "base/unixhead.mak"
168 (("/bin/sh") (which "bash")))))
169 (add-after 'configure 'remove-doc-reference
170 (lambda _
171 ;; Don't retain a reference to the 'doc' output in 'gs'.
172 ;; The only use of this definition is in the output of
173 ;; 'gs --help', so this change is fine.
174 (substitute* "base/gscdef.c"
175 (("GS_DOCDIR")
176 "\"~/.guix-profile/share/doc/ghostscript\""))))
177 (replace 'build
178 (lambda _
179 ;; Build 'libgs.so', but don't build the statically-linked 'gs'
180 ;; binary (saves 18 MiB).
181 (zero? (system* "make" "so" "-j"
182 (number->string (parallel-job-count))))))
183 (replace 'install
184 (lambda _
185 (zero? (system* "make" "soinstall")))))))
186 (synopsis "PostScript and PDF interpreter")
187 (description
188 "Ghostscript is an interpreter for the PostScript language and the PDF
189file format. It also includes a C library that implements the graphics
190capabilities of the PostScript language. It supports a wide variety of
191output file formats and printers.")
192 (license license:agpl3+)
193 (home-page "http://www.gnu.org/software/ghostscript/")))
194
195(define-public ghostscript/x
196 (package (inherit ghostscript)
197 (name (string-append (package-name ghostscript) "-with-x"))
198 (inputs `(("libxext" ,libxext)
199 ("libxt" ,libxt)
200 ,@(package-inputs ghostscript)))))
201
202(define (ghostscript-wrapper name ghostscript)
203 ;; Return a GHOSTSCRIPT wrapper that provides the 'gs' command.
204 ;; See <https://lists.gnu.org/archive/html/guix-devel/2016-07/msg00987.html>.
205 (package
206 (name name)
207 (version (package-version ghostscript))
208 (source #f)
209 (build-system trivial-build-system)
210 (inputs `(("ghostscript" ,ghostscript)))
211 (arguments
212 `(#:modules ((guix build utils))
213 #:builder (begin
214 (use-modules (guix build utils))
215
216 (let* ((out (assoc-ref %outputs "out"))
217 (bin (string-append out "/bin"))
218 (gs (assoc-ref %build-inputs "ghostscript")))
219 (mkdir-p bin)
220 (with-directory-excursion bin
221 (symlink (string-append gs "/bin/gsc") "gs")
222 #t)))))
223 (synopsis "Wrapper providing Ghostscript's 'gs' command")
224 (description
225 "This package provides the @command{gs} command, which used to be
226provided by Ghostscript itself and no longer is.")
227 (license (package-license ghostscript))
228 (home-page (package-home-page ghostscript))))
229
230(define-public ghostscript-gs
231 (ghostscript-wrapper "ghostscript-gs" ghostscript))
232
233(define-public ghostscript-gs/x
234 (ghostscript-wrapper "ghostscript-gs-with-x" ghostscript/x))
235
236(define-public ijs
237 (package
238 (name "ijs")
239 (version "9.14.0")
240 (source (origin
241 (method url-fetch)
242 (uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-"
243 version ".tar.xz"))
244 (sha256 (base32
245 "0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1"))))
246 (build-system gnu-build-system)
247 (native-inputs
248 `(("libtool" ,libtool)
249 ("automake" ,automake)
250 ("autoconf" ,autoconf)))
251 (arguments
252 `(#:phases
253 (alist-cons-after
254 'unpack 'autogen
255 (lambda _
256 ;; need to regenerate macros
257 (system* "autoreconf" "-if")
258 ;; do not run configure
259 (substitute* "autogen.sh"
260 (("^.*\\$srcdir/configure.*") ""))
261 (system* "bash" "autogen.sh")
262
263 ;; create configure script in ./ijs/
264 (chdir "ijs")
265 ;; do not run configure
266 (substitute* "autogen.sh"
267 (("^.*\\$srcdir/configure.*") "")
268 (("^ + && echo Now type.*$") ""))
269 (zero? (system* "bash" "autogen.sh")))
270 %standard-phases)))
271 (synopsis "IJS driver framework for inkjet and other raster devices")
272 (description
273 "IJS is a protocol for transmission of raster page images. This package
274provides the reference implementation of the raster printer driver
275architecture.")
276 (license license:expat)
277 (home-page "http://www.gnu.org/software/ghostscript/")))
278
279(define-public gs-fonts
280 (package
281 (name "gs-fonts")
282 (version "8.11")
283 (source (origin
284 (method url-fetch)
285 (uri (string-append "mirror://sourceforge/gs-fonts/gs-fonts/"
286 version
287 "%20%28base%2035%2C%20GPL%29/ghostscript-fonts-std-"
288 version
289 ".tar.gz"))
290 (sha256 (base32
291 "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf"))))
292 (build-system gnu-build-system)
293 (arguments
294 `(#:tests? #f ; nothing to check, just files to copy
295 #:modules ((guix build gnu-build-system)
296 (guix build utils)
297 (srfi srfi-1)) ; for alist-delete
298 #:phases
299 (alist-delete
300 'configure
301 (alist-delete
302 'build
303 (alist-replace
304 'install
305 (lambda* (#:key outputs #:allow-other-keys)
306 (let* ((out (assoc-ref outputs "out"))
307 (dir (string-append out "/share/fonts/type1/ghostscript")))
308 (mkdir-p dir)
309 (for-each
310 (lambda (file)
311 (copy-file file (string-append dir "/" file)))
312 (find-files "." "pfb|afm"))))
313 %standard-phases)))))
314 (synopsis "Free replacements for the PostScript fonts")
315 (description
316 "Ghostscript fonts provides fonts and font metrics customarily distributed with
317Ghostscript. It currently includes the 35 standard PostScript fonts.")
318 (license license:gpl2)
319 (home-page "http://sourceforge.net/projects/gs-fonts/")))
320
321(define-public libspectre
322 (package
323 (name "libspectre")
324 (version "0.2.7")
325 (source (origin
326 (method url-fetch)
327 (uri (string-append "https://libspectre.freedesktop.org/releases/libspectre-"
328 version ".tar.gz"))
329 (sha256 (base32
330 "1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8"))))
331 (build-system gnu-build-system)
332 (inputs `(("ghostscript" ,ghostscript)))
333 (native-inputs `(("pkg-config" ,pkg-config)))
334 (synopsis "Postscript rendering library")
335 (description
336 "libspectre is a small library for rendering Postscript documents.
337It provides a convenient easy to use API for handling and rendering
338Postscript documents.")
339 (license license:gpl2+)
340 (home-page "http://www.freedesktop.org/wiki/Software/libspectre")))