gnu: cups-filters: Make sure filters find Ghostscript.

* gnu/packages/cups.scm (cups-filters)[arguments]: Add
'patch-foomatic-hardcoded-file-names' and 'wrap-filters' phases.
master
Ludovic Courtès 2017-09-12 23:07:41 +02:00
parent ba74ef94d7
commit 1728c41171
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 29 additions and 2 deletions

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
@ -99,7 +99,34 @@
(assoc-ref %build-inputs "bash")
"/bin/bash")
,(string-append "--with-rcdir="
(assoc-ref %outputs "out") "/etc/rc.d"))))
(assoc-ref %outputs "out") "/etc/rc.d"))
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-foomatic-hardcoded-file-names
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Foomatic has hardcoded file names we need to fix.
(let ((out (assoc-ref outputs "out"))
(gs (assoc-ref inputs "ghostscript")))
(substitute* "filter/foomatic-rip/foomaticrip.c"
(("/usr/local/lib/cups/filter")
(string-append out "/lib/cups/filter")))
#t)))
(add-after 'install 'wrap-filters
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Some filters expect to find 'gs' in $PATH. We cannot
;; just hard-code its absolute file name in the source
;; because foomatic-rip, for example, has tests like
;; 'startswith(cmd, "gs")'.
(let ((out (assoc-ref outputs "out"))
(ghostscript (assoc-ref inputs "ghostscript")))
(for-each (lambda (file)
(wrap-program file
`("PATH" ":" prefix
(,(string-append ghostscript
"/bin")))))
(find-files (string-append
out "/lib/cups/filter")))
#t))))))
(native-inputs
`(("glib" ,glib "bin") ; for gdbus-codegen
("pkg-config" ,pkg-config)))