2015-01-05 13:56:51 +01:00
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
|
|
|
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
2019-03-15 22:12:07 +01:00
|
|
|
;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
2018-07-19 20:16:43 +02:00
|
|
|
;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
|
2016-04-29 17:05:47 +02:00
|
|
|
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
|
2017-01-15 19:38:48 +01:00
|
|
|
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
2017-05-02 09:41:24 +02:00
|
|
|
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
|
2018-01-20 05:59:20 +01:00
|
|
|
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
2015-01-05 13:56:51 +01:00
|
|
|
;;;
|
|
|
|
;;; This file is part of GNU Guix.
|
|
|
|
;;;
|
|
|
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
|
|
|
;;; under the terms of the GNU General Public License as published by
|
|
|
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
|
|
|
;;; your option) any later version.
|
|
|
|
;;;
|
|
|
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
|
|
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;;; GNU General Public License for more details.
|
|
|
|
;;;
|
|
|
|
;;; You should have received a copy of the GNU General Public License
|
|
|
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
(define-module (gnu packages cups)
|
|
|
|
#:use-module (gnu packages)
|
2017-09-09 22:56:54 +02:00
|
|
|
#:use-module (gnu packages algebra)
|
|
|
|
#:use-module (gnu packages autotools)
|
2015-01-05 13:56:51 +01:00
|
|
|
#:use-module (gnu packages avahi)
|
|
|
|
#:use-module (gnu packages compression)
|
2018-06-19 17:50:16 +02:00
|
|
|
#:use-module (gnu packages fonts) ; font-dejavu
|
|
|
|
#:use-module (gnu packages fontutils)
|
|
|
|
#:use-module (gnu packages ghostscript)
|
|
|
|
#:use-module (gnu packages glib)
|
2017-09-09 22:56:54 +02:00
|
|
|
#:use-module (gnu packages groff)
|
2018-06-19 17:50:16 +02:00
|
|
|
#:use-module (gnu packages image)
|
2016-04-29 17:05:47 +02:00
|
|
|
#:use-module (gnu packages libusb)
|
2018-06-19 17:50:16 +02:00
|
|
|
#:use-module (gnu packages pdf)
|
2017-09-09 22:56:54 +02:00
|
|
|
#:use-module (gnu packages perl)
|
2018-06-19 17:50:16 +02:00
|
|
|
#:use-module (gnu packages pkg-config)
|
2019-01-29 11:02:21 +01:00
|
|
|
#:use-module (gnu packages polkit)
|
2017-09-09 22:56:54 +02:00
|
|
|
#:use-module (gnu packages pretty-print)
|
2016-04-29 17:05:47 +02:00
|
|
|
#:use-module (gnu packages python)
|
gnu: Separate Python core packages from the rest.
* gnu/packages/python.scm: Move hundreds of package definitions from here...
* gnu/packages/python-xyz.scm: ...to this new module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/ada.scm,
gnu/packages/admin.scm,
gnu/packages/android.scm,
gnu/packages/audio.scm,
gnu/packages/backup.scm,
gnu/packages/benchmark.scm,
gnu/packages/bioinformatics.scm,
gnu/packages/bittorrent.scm,
gnu/packages/calendar.scm,
gnu/packages/check.scm,
gnu/packages/chemistry.scm,
gnu/packages/cluster.scm,
gnu/packages/compression.scm,
gnu/packages/connman.scm,
gnu/packages/crypto.scm,
gnu/packages/cups.scm,
gnu/packages/databases.scm,
gnu/packages/dav.scm,
gnu/packages/direct-connect.scm,
gnu/packages/disk.scm,
gnu/packages/django.scm,
gnu/packages/dlang.scm,
gnu/packages/docker.scm,
gnu/packages/ebook.scm,
gnu/packages/elf.scm,
gnu/packages/emacs.scm,
gnu/packages/emulators.scm,
gnu/packages/engineering.scm,
gnu/packages/enlightenment.scm,
gnu/packages/finance.scm,
gnu/packages/fltk.scm,
gnu/packages/fontutils.scm,
gnu/packages/freedesktop.scm,
gnu/packages/game-development.scm,
gnu/packages/games.scm,
gnu/packages/geo.scm,
gnu/packages/gl.scm,
gnu/packages/glib.scm,
gnu/packages/gnome.scm,
gnu/packages/gnupg.scm,
gnu/packages/gnuzilla.scm,
gnu/packages/graph.scm,
gnu/packages/graphics.scm,
gnu/packages/graphviz.scm,
gnu/packages/gtk.scm,
gnu/packages/ham-radio.scm,
gnu/packages/image-processing.scm,
gnu/packages/image-viewers.scm,
gnu/packages/image.scm,
gnu/packages/irc.scm,
gnu/packages/jrnl.scm,
gnu/packages/julia.scm,
gnu/packages/kde-frameworks.scm,
gnu/packages/key-mon.scm,
gnu/packages/libffi.scm,
gnu/packages/libreoffice.scm,
gnu/packages/libusb.scm,
gnu/packages/lirc.scm,
gnu/packages/logging.scm,
gnu/packages/machine-learning.scm,
gnu/packages/mail.scm,
gnu/packages/mate.scm,
gnu/packages/maths.scm,
gnu/packages/medical.scm,
gnu/packages/messaging.scm,
gnu/packages/monitoring.scm,
gnu/packages/mp3.scm,
gnu/packages/mpd.scm,
gnu/packages/music.scm,
gnu/packages/networking.scm,
gnu/packages/nutrition.scm,
gnu/packages/openldap.scm,
gnu/packages/openstack.scm,
gnu/packages/package-management.scm,
gnu/packages/password-utils.scm,
gnu/packages/patchutils.scm,
gnu/packages/pdf.scm,
gnu/packages/photo.scm,
gnu/packages/polkit.scm,
gnu/packages/protobuf.scm,
gnu/packages/python-crypto.scm,
gnu/packages/python-web.scm,
gnu/packages/qt.scm,
gnu/packages/rdf.scm,
gnu/packages/ruby.scm,
gnu/packages/search.scm,
gnu/packages/selinux.scm,
gnu/packages/serialization.scm,
gnu/packages/shells.scm,
gnu/packages/simulation.scm,
gnu/packages/ssh.scm,
gnu/packages/statistics.scm,
gnu/packages/storage.scm,
gnu/packages/sync.scm,
gnu/packages/terminals.scm,
gnu/packages/textutils.scm,
gnu/packages/time.scm,
gnu/packages/tls.scm,
gnu/packages/tor.scm,
gnu/packages/tryton.scm,
gnu/packages/version-control.scm,
gnu/packages/video.scm,
gnu/packages/virtualization.scm,
gnu/packages/vpn.scm,
gnu/packages/web-browsers.scm,
gnu/packages/web.scm,
gnu/packages/wicd.scm,
gnu/packages/xdisorg.scm,
gnu/packages/xorg.scm: Update module references.
2019-01-15 14:21:30 +01:00
|
|
|
#:use-module (gnu packages python-xyz)
|
2018-06-19 20:02:42 +02:00
|
|
|
#:use-module (gnu packages qt)
|
2016-04-29 17:05:47 +02:00
|
|
|
#:use-module (gnu packages scanner)
|
2018-06-19 17:50:16 +02:00
|
|
|
#:use-module (gnu packages tls)
|
|
|
|
#:use-module (guix build-system gnu)
|
2019-01-29 11:11:29 +01:00
|
|
|
#:use-module (guix build-system python)
|
2018-06-19 17:50:16 +02:00
|
|
|
#:use-module (guix download)
|
|
|
|
#:use-module ((guix licenses) #:prefix license:)
|
2018-07-19 20:16:43 +02:00
|
|
|
#:use-module (guix packages)
|
|
|
|
#:use-module (guix utils)
|
2019-03-15 22:36:46 +01:00
|
|
|
#:use-module (srfi srfi-1)
|
|
|
|
#:use-module (ice-9 match))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
|
|
|
(define-public cups-filters
|
|
|
|
(package
|
|
|
|
(name "cups-filters")
|
2019-03-31 20:22:16 +02:00
|
|
|
(version "1.22.3")
|
2016-10-30 00:07:08 +02:00
|
|
|
(source(origin
|
2015-01-05 13:56:51 +01:00
|
|
|
(method url-fetch)
|
|
|
|
(uri
|
2017-10-14 17:23:31 +02:00
|
|
|
(string-append "https://openprinting.org/download/cups-filters/"
|
2015-01-05 13:56:51 +01:00
|
|
|
"cups-filters-" version ".tar.xz"))
|
|
|
|
(sha256
|
|
|
|
(base32
|
2019-03-31 20:22:16 +02:00
|
|
|
"11vilv80l3q7hz8vyhclvjcnlgk93r7p9dvg634186iddjzls0j3"))
|
2015-01-05 13:56:51 +01:00
|
|
|
(modules '((guix build utils)))
|
|
|
|
(snippet
|
|
|
|
;; install backends, banners and filters to cups-filters output
|
|
|
|
;; directory, not the cups server directory
|
2016-10-10 15:29:59 +02:00
|
|
|
'(begin
|
|
|
|
(substitute* "Makefile.in"
|
|
|
|
(("CUPS_DATADIR = @CUPS_DATADIR@")
|
|
|
|
"CUPS_DATADIR = $(PREFIX)/share/cups")
|
|
|
|
(("pkgcupsserverrootdir = \\$\\(CUPS_SERVERROOT\\)")
|
|
|
|
"pkgcupsserverrootdir = $(PREFIX)")
|
|
|
|
;; Choose standard directories notably so that binaries are
|
|
|
|
;; stripped.
|
|
|
|
(("pkgbackenddir = \\$\\(CUPS_SERVERBIN\\)/backend")
|
|
|
|
"pkgbackenddir = $(PREFIX)/lib/cups/backend")
|
|
|
|
(("pkgfilterdir = \\$\\(CUPS_SERVERBIN\\)/filter")
|
|
|
|
"pkgfilterdir = $(PREFIX)/lib/cups/filter"))
|
|
|
|
;; Find bannertopdf data such as the print test page in our
|
|
|
|
;; output directory, not CUPS's prefix.
|
|
|
|
(substitute* "configure"
|
|
|
|
(("\\{CUPS_DATADIR\\}/data")
|
gnu: All snippets report errors using exceptions, else return #t.
* gnu/packages/admin.scm, gnu/packages/algebra.scm, gnu/packages/audio.scm,
gnu/packages/backup.scm, gnu/packages/base.scm,
gnu/packages/bioinformatics.scm, gnu/packages/cdrom.scm,
gnu/packages/chez.scm, gnu/packages/code.scm, gnu/packages/compression.scm,
gnu/packages/cross-base.scm, gnu/packages/crypto.scm, gnu/packages/cups.scm,
gnu/packages/databases.scm, gnu/packages/dns.scm, gnu/packages/emacs.scm,
gnu/packages/emulators.scm, gnu/packages/engineering.scm,
gnu/packages/enlightenment.scm, gnu/packages/fpga.scm,
gnu/packages/freedesktop.scm, gnu/packages/ftp.scm, gnu/packages/games.scm,
gnu/packages/gcc.scm, gnu/packages/geo.scm, gnu/packages/ghostscript.scm,
gnu/packages/gl.scm, gnu/packages/glib.scm, gnu/packages/gnome.scm,
gnu/packages/gnuzilla.scm, gnu/packages/graphics.scm, gnu/packages/gtk.scm,
gnu/packages/guile.scm, gnu/packages/irc.scm, gnu/packages/java.scm,
gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/lisp.scm,
gnu/packages/lxde.scm, gnu/packages/machine-learning.scm,
gnu/packages/mail.scm, gnu/packages/maths.scm, gnu/packages/messaging.scm,
gnu/packages/monitoring.scm, gnu/packages/mp3.scm, gnu/packages/music.scm,
gnu/packages/netpbm.scm, gnu/packages/networking.scm, gnu/packages/node.scm,
gnu/packages/nvi.scm, gnu/packages/ocaml.scm, gnu/packages/pdf.scm,
gnu/packages/perl.scm, gnu/packages/php.scm, gnu/packages/plotutils.scm,
gnu/packages/pretty-print.scm, gnu/packages/profiling.scm,
gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm,
gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/robotics.scm,
gnu/packages/sawfish.scm, gnu/packages/scanner.scm, gnu/packages/scheme.scm,
gnu/packages/scribus.scm, gnu/packages/sdl.scm,
gnu/packages/serialization.scm, gnu/packages/shells.scm,
gnu/packages/slang.scm, gnu/packages/smalltalk.scm, gnu/packages/ssh.scm,
gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/tbb.scm,
gnu/packages/terminals.scm, gnu/packages/texinfo.scm,
gnu/packages/text-editors.scm, gnu/packages/textutils.scm,
gnu/packages/tls.scm, gnu/packages/unrtf.scm,
gnu/packages/version-control.scm, gnu/packages/video.scm,
gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wm.scm,
gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xorg.scm:
In all snippets, report errors using exceptions, or else return #t.
2018-03-16 12:47:34 +01:00
|
|
|
"{prefix}/share/cups/data"))
|
|
|
|
#t))))
|
2015-01-05 13:56:51 +01:00
|
|
|
(build-system gnu-build-system)
|
|
|
|
(arguments
|
|
|
|
`(#:make-flags (list (string-append "PREFIX=" %output))
|
|
|
|
#:configure-flags
|
2016-12-25 05:50:57 +01:00
|
|
|
`("--disable-driverless" ; TODO: enable this
|
2017-01-16 16:44:45 +01:00
|
|
|
"--disable-mutool" ; depends on yet another PDF library (mupdf)
|
2017-09-12 23:15:54 +02:00
|
|
|
|
|
|
|
;; Look for the "domain socket of CUPS" in /var/run/cups.
|
|
|
|
"--localstatedir=/var"
|
|
|
|
|
2017-09-12 23:17:50 +02:00
|
|
|
;; Free software for the win.
|
|
|
|
"--with-acroread-path=evince"
|
|
|
|
|
2016-12-25 05:50:57 +01:00
|
|
|
,(string-append "--with-test-font-path="
|
2015-01-05 13:56:51 +01:00
|
|
|
(assoc-ref %build-inputs "font-dejavu")
|
|
|
|
"/share/fonts/truetype/DejaVuSans.ttf")
|
2016-10-07 22:24:23 +02:00
|
|
|
,(string-append "--with-gs-path="
|
|
|
|
(assoc-ref %build-inputs "ghostscript")
|
|
|
|
"/bin/gsc")
|
2016-12-25 05:50:57 +01:00
|
|
|
,(string-append "--with-shell="
|
|
|
|
(assoc-ref %build-inputs "bash")
|
|
|
|
"/bin/bash")
|
2015-01-05 13:56:51 +01:00
|
|
|
,(string-append "--with-rcdir="
|
2017-09-12 23:07:41 +02:00
|
|
|
(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)))
|
2018-08-08 13:07:16 +02:00
|
|
|
(add-after 'unpack 'patch-for-poppler
|
|
|
|
(lambda _
|
|
|
|
(substitute* "filter/pdf.cxx"
|
|
|
|
(("GooString \\*field_name;" m)
|
|
|
|
(string-append "const " m)))
|
|
|
|
#t))
|
2017-09-12 23:07:41 +02:00
|
|
|
(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))))))
|
2015-01-05 13:56:51 +01:00
|
|
|
(native-inputs
|
2015-09-15 23:55:09 +02:00
|
|
|
`(("glib" ,glib "bin") ; for gdbus-codegen
|
|
|
|
("pkg-config" ,pkg-config)))
|
2015-01-05 13:56:51 +01:00
|
|
|
(inputs
|
2016-08-30 16:29:02 +02:00
|
|
|
`(("avahi" ,avahi)
|
|
|
|
("fontconfig" ,fontconfig)
|
2015-01-05 13:56:51 +01:00
|
|
|
("freetype" ,freetype)
|
2016-12-25 05:50:57 +01:00
|
|
|
("font-dejavu" ,font-dejavu) ; also needed by test suite
|
2017-12-05 17:49:48 +01:00
|
|
|
("ghostscript" ,ghostscript/cups)
|
2015-01-05 13:56:51 +01:00
|
|
|
("ijs" ,ijs)
|
|
|
|
("dbus" ,dbus)
|
|
|
|
("lcms" ,lcms)
|
2016-12-25 05:50:57 +01:00
|
|
|
("libjpeg" ,libjpeg)
|
2015-01-05 13:56:51 +01:00
|
|
|
("libpng" ,libpng)
|
|
|
|
("libtiff" ,libtiff)
|
|
|
|
("glib" ,glib)
|
|
|
|
("qpdf" ,qpdf)
|
|
|
|
("poppler" ,poppler)
|
|
|
|
("cups-minimal" ,cups-minimal)))
|
2016-08-15 10:32:44 +02:00
|
|
|
(home-page "https://wiki.linuxfoundation.org/openprinting/cups-filters")
|
2015-01-05 13:56:51 +01:00
|
|
|
(synopsis "OpenPrinting CUPS filters and backends")
|
|
|
|
(description
|
|
|
|
"Contains backends, filters, and other software that was once part of the
|
|
|
|
core CUPS distribution but is no longer maintained by Apple Inc. In addition
|
|
|
|
it contains additional filters developed independently of Apple, especially
|
|
|
|
filters for the PDF-centric printing workflow introduced by OpenPrinting.")
|
|
|
|
;; Different filters and backends have different licenses; see COPYING for
|
|
|
|
;; details
|
|
|
|
(license (list license:gpl2
|
|
|
|
license:gpl2+
|
|
|
|
license:gpl3
|
|
|
|
license:gpl3+
|
|
|
|
license:lgpl2.0+
|
|
|
|
license:expat))))
|
|
|
|
|
|
|
|
;; CUPS on non-MacOS systems requires cups-filters. Since cups-filters also
|
|
|
|
;; depends on CUPS libraries and binaries, cups-minimal has been added to
|
|
|
|
;; satisfy this dependency.
|
|
|
|
(define-public cups-minimal
|
|
|
|
(package
|
|
|
|
(name "cups-minimal")
|
2019-03-23 21:41:45 +01:00
|
|
|
(version "2.2.11")
|
2016-10-30 00:13:22 +02:00
|
|
|
(source
|
|
|
|
(origin
|
|
|
|
(method url-fetch)
|
|
|
|
(uri (string-append "https://github.com/apple/cups/releases/download/v"
|
|
|
|
version "/cups-" version "-source.tar.gz"))
|
|
|
|
(sha256
|
|
|
|
(base32
|
2019-03-23 21:41:45 +01:00
|
|
|
"0v5p10lyv8wv48s8ghkhjmdrxg6iwj8hn36v1ilkz46n7y0i107m"))))
|
2015-01-05 13:56:51 +01:00
|
|
|
(build-system gnu-build-system)
|
|
|
|
(arguments
|
|
|
|
`(#:configure-flags
|
|
|
|
'("--disable-launchd"
|
|
|
|
"--disable-systemd"
|
|
|
|
"--disable-avahi"
|
|
|
|
"--disable-dnssd")
|
|
|
|
;; Seven tests fail, mostly because of files that are provided by the
|
|
|
|
;; cups-filters package.
|
|
|
|
#:tests? #f
|
|
|
|
#:phases
|
2016-05-09 15:55:44 +02:00
|
|
|
(modify-phases %standard-phases
|
|
|
|
(add-before 'configure 'patch-makedefs
|
|
|
|
(lambda _
|
|
|
|
(substitute* "Makedefs.in"
|
|
|
|
(("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@")
|
2018-03-18 07:33:42 +01:00
|
|
|
(("/bin/sh") (which "sh")))
|
|
|
|
#t))
|
2017-02-26 03:22:08 +01:00
|
|
|
;; Make the compressed manpages writable so that the
|
|
|
|
;; reset-gzip-timestamps phase does not error out.
|
|
|
|
(add-before 'reset-gzip-timestamps 'make-manpages-writable
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
(man (string-append out "/share/man")))
|
|
|
|
(for-each (lambda (file) (chmod file #o644))
|
2018-03-18 07:33:42 +01:00
|
|
|
(find-files man "\\.gz"))
|
|
|
|
#t)))
|
2016-05-09 15:55:44 +02:00
|
|
|
(add-before 'build 'patch-tests
|
|
|
|
(lambda _
|
|
|
|
(substitute* "test/ippserver.c"
|
|
|
|
(("# else /\\* HAVE_AVAHI \\*/")
|
2018-03-18 07:33:42 +01:00
|
|
|
"#elif defined(HAVE_AVAHI)"))
|
|
|
|
#t)))))
|
2015-01-05 13:56:51 +01:00
|
|
|
(native-inputs
|
|
|
|
`(("pkg-config" ,pkg-config)))
|
|
|
|
(inputs
|
|
|
|
`(("zlib" ,zlib)
|
|
|
|
("gnutls" ,gnutls)))
|
2016-08-15 10:30:10 +02:00
|
|
|
(home-page "https://www.cups.org")
|
2015-01-05 13:56:51 +01:00
|
|
|
(synopsis "The Common Unix Printing System")
|
|
|
|
(description
|
2017-10-14 17:31:51 +02:00
|
|
|
"CUPS is a printing system that uses the Internet Printing Protocol
|
|
|
|
(@dfn{IPP}). It provides System V and BSD command-line interfaces, as well
|
2015-01-05 13:56:51 +01:00
|
|
|
as a Web interface and a C programming interface to manage printers and print
|
|
|
|
jobs. It supports printing to both local (parallel, serial, USB) and
|
|
|
|
networked printers, and printers can be shared from one computer to another.
|
2017-10-14 17:31:51 +02:00
|
|
|
Internally, CUPS uses PostScript Printer Description (@dfn{PPD}) files to
|
|
|
|
describe printer capabilities and features, and a wide variety of generic and
|
2015-01-05 13:56:51 +01:00
|
|
|
device-specific programs to convert and print many types of files.")
|
|
|
|
(license license:gpl2)))
|
|
|
|
|
|
|
|
(define-public cups
|
|
|
|
(package (inherit cups-minimal)
|
|
|
|
(name "cups")
|
|
|
|
(arguments
|
|
|
|
`(;; Three tests fail:
|
|
|
|
;; * two tests in ipp-1.1.test related to "RFC 2911 section 3.2.6:
|
|
|
|
;; Get-Jobs Operation"
|
|
|
|
;; * test of number of error/warning messages, probably related to a
|
|
|
|
;; missing font.
|
|
|
|
#:tests? #f
|
|
|
|
#:configure-flags
|
|
|
|
'("--disable-launchd"
|
|
|
|
"--disable-systemd")
|
|
|
|
#:phases
|
2016-08-15 10:22:59 +02:00
|
|
|
(modify-phases %standard-phases
|
|
|
|
(add-before 'configure 'patch-makedefs
|
|
|
|
(lambda _
|
|
|
|
(substitute* "Makedefs.in"
|
|
|
|
(("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@")
|
2018-03-18 07:33:42 +01:00
|
|
|
(("/bin/sh") (which "sh")))
|
|
|
|
#t))
|
2016-08-15 10:22:59 +02:00
|
|
|
(add-before 'check 'patch-tests
|
|
|
|
(lambda _
|
|
|
|
(let ((filters (assoc-ref %build-inputs "cups-filters"))
|
|
|
|
(catpath (string-append
|
|
|
|
(assoc-ref %build-inputs "coreutils") "/bin/"))
|
|
|
|
(testdir (string-append (getcwd) "/tmp/")))
|
|
|
|
(mkdir testdir)
|
|
|
|
(substitute* "test/run-stp-tests.sh"
|
|
|
|
((" *BASE=/tmp/") (string-append "BASE=" testdir))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; allow installation of filters from output dir and from
|
|
|
|
;; cups-filters
|
|
|
|
(("for dir in /usr/libexec/cups/filter /usr/lib/cups/filter")
|
|
|
|
(string-append
|
|
|
|
"for dir in "
|
|
|
|
(assoc-ref %outputs "out") "/lib/cups/filter "
|
|
|
|
filters "/lib/cups/filter"))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; check for charsets in cups-filters output
|
|
|
|
(("/usr/share/cups/charsets")
|
|
|
|
(string-append filters "/share/cups/charsets"))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; install additional required filters
|
|
|
|
(("instfilter texttopdf texttopdf pdf")
|
|
|
|
(string-append
|
|
|
|
"instfilter texttopdf texttopdf pdf;"
|
|
|
|
"instfilter imagetoraster imagetoraster raster;"
|
|
|
|
"instfilter gstoraster gstoraster raster;"
|
|
|
|
"instfilter urftopdf urftopdf pdf;"
|
|
|
|
"instfilter rastertopdf rastertopdf pdf;"
|
|
|
|
"instfilter pstopdf pstopdf pdf"))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; specify location of lpstat binary
|
|
|
|
(("description=\"`lpstat -l")
|
|
|
|
"description=\"`../systemv/lpstat -l")
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; patch shebangs of embedded scripts
|
|
|
|
(("#!/bin/sh") (string-append "#!" (which "sh")))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; also link mime definitions from cups-filters
|
|
|
|
;; to enable the additional filters for the test suite
|
|
|
|
(("ln -s \\$root/conf/mime\\.types")
|
|
|
|
(string-append
|
|
|
|
"ln -s " filters
|
|
|
|
"/share/cups/mime/cupsfilters.types $BASE/share/mime; "
|
|
|
|
"ln -s $root/conf/mime.types"))
|
|
|
|
(("ln -s \\$root/conf/mime\\.convs")
|
|
|
|
(string-append
|
|
|
|
"ln -s " filters
|
|
|
|
"/share/cups/mime/cupsfilters.convs $BASE/share/mime; "
|
|
|
|
"ln -s $root/conf/mime.convs")))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; fix search path for "cat"
|
|
|
|
(substitute* "cups/testfile.c"
|
|
|
|
(("cupsFileFind\\(\"cat\", \"/bin\"")
|
|
|
|
(string-append "cupsFileFind(\"cat\", \"" catpath "\""))
|
|
|
|
(("cupsFileFind\\(\"cat\", \"/bin:/usr/bin\"")
|
2018-03-18 07:33:42 +01:00
|
|
|
(string-append "cupsFileFind(\"cat\", \"" catpath "\"")))
|
|
|
|
#t)))
|
2017-02-28 08:03:56 +01:00
|
|
|
;; Make the compressed manpages writable so that the
|
|
|
|
;; reset-gzip-timestamps phase does not error out.
|
|
|
|
(add-before 'reset-gzip-timestamps 'make-manpages-writable
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
(man (string-append out "/share/man")))
|
|
|
|
(for-each (lambda (file) (chmod file #o644))
|
2018-03-18 07:33:42 +01:00
|
|
|
(find-files man "\\.gz"))
|
|
|
|
#t)))
|
2016-08-15 10:22:59 +02:00
|
|
|
(add-after 'install 'install-cups-filters-symlinks
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
(let ((out (assoc-ref outputs "out"))
|
|
|
|
(cups-filters (assoc-ref inputs "cups-filters")))
|
|
|
|
;; charsets
|
|
|
|
(symlink
|
|
|
|
(string-append cups-filters "/share/cups/charsets")
|
|
|
|
(string-append out "/share/charsets"))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; mime types, driver file, ppds
|
|
|
|
(for-each
|
|
|
|
(lambda (f)
|
|
|
|
(symlink (string-append cups-filters f)
|
|
|
|
(string-append out f)))
|
|
|
|
'("/share/cups/mime/cupsfilters.types"
|
|
|
|
"/share/cups/mime/cupsfilters.convs"
|
|
|
|
"/share/cups/drv/cupsfilters.drv"
|
|
|
|
"/share/ppd"))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; filters
|
|
|
|
(for-each
|
|
|
|
(lambda (f)
|
|
|
|
(symlink f
|
|
|
|
(string-append out "/lib/cups/filter" (basename f))))
|
|
|
|
(find-files (string-append cups-filters "/lib/cups/filter")))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; backends
|
|
|
|
(for-each
|
|
|
|
(lambda (f)
|
|
|
|
(symlink (string-append cups-filters f)
|
|
|
|
(string-append out "/lib/cups/backend/"
|
|
|
|
(basename f))))
|
|
|
|
'("/lib/cups/backend/parallel"
|
|
|
|
"/lib/cups/backend/serial"))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; banners
|
|
|
|
(let ((banners "/share/cups/banners"))
|
|
|
|
(delete-file-recursively (string-append out banners))
|
|
|
|
(symlink (string-append cups-filters banners)
|
|
|
|
(string-append out banners)))
|
2015-01-05 13:56:51 +01:00
|
|
|
|
2016-08-15 10:22:59 +02:00
|
|
|
;; assorted data
|
|
|
|
(let ((data "/share/cups/data"))
|
|
|
|
(delete-file-recursively (string-append out data))
|
|
|
|
(symlink (string-append cups-filters data)
|
2018-03-18 07:33:42 +01:00
|
|
|
(string-append out data)))
|
|
|
|
|
|
|
|
#t))))))
|
2015-01-05 13:56:51 +01:00
|
|
|
(inputs
|
|
|
|
`(("avahi" ,avahi)
|
|
|
|
("gnutls" ,gnutls)
|
|
|
|
("cups-filters" ,cups-filters)
|
|
|
|
("zlib" ,zlib)))))
|
2016-04-29 17:05:47 +02:00
|
|
|
|
2019-01-29 11:02:21 +01:00
|
|
|
(define-public cups-pk-helper
|
|
|
|
(package
|
|
|
|
(name "cups-pk-helper")
|
|
|
|
(version "0.2.6")
|
|
|
|
(source (origin
|
|
|
|
(method url-fetch)
|
|
|
|
(uri (string-append "https://freedesktop.org/software/"
|
|
|
|
name "/releases/" name "-" version ".tar.xz"))
|
|
|
|
(sha256
|
|
|
|
(base32
|
|
|
|
"0a52jw6rm7lr5nbyksiia0rn7sasyb5cjqcb95z1wxm2yprgi6lm"))))
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
(native-inputs
|
|
|
|
`(("intltool" ,intltool)
|
|
|
|
("pkg-config" ,pkg-config)
|
|
|
|
("glib" ,glib)
|
|
|
|
("polkit" ,polkit)
|
|
|
|
("cups" ,cups)))
|
|
|
|
(home-page "https://www.freedesktop.org/wiki/Software/cups-pk-helper/")
|
|
|
|
(synopsis "PolicyKit helper to configure CUPS with fine-grained privileges")
|
|
|
|
(description
|
|
|
|
"This package provides the org.opensuse.CupsPkHelper.Mechanism DBus
|
|
|
|
system service which uses @file{cups-pk-helper-mechanism}. This package
|
|
|
|
should only be used as part of the Guix cups-pk-helper service.")
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
2016-04-29 17:05:47 +02:00
|
|
|
(define-public hplip
|
|
|
|
(package
|
|
|
|
(name "hplip")
|
2018-10-26 01:49:37 +02:00
|
|
|
(version "3.18.9")
|
2016-04-29 17:05:47 +02:00
|
|
|
(source (origin
|
|
|
|
(method url-fetch)
|
2016-07-21 08:35:30 +02:00
|
|
|
(uri (string-append "mirror://sourceforge/hplip/hplip/" version
|
|
|
|
"/hplip-" version ".tar.gz"))
|
2016-04-29 17:05:47 +02:00
|
|
|
(sha256
|
|
|
|
(base32
|
2018-10-26 01:49:37 +02:00
|
|
|
"0g3q5mm2crjyc1z4z6gv4lam6sc5d3diz704djrnpqadk4q3h290"))
|
2017-12-15 23:30:29 +01:00
|
|
|
(modules '((guix build utils)))
|
2018-11-07 22:13:02 +01:00
|
|
|
(patches (search-patches "hplip-remove-imageprocessor.patch"))
|
2017-12-15 23:30:29 +01:00
|
|
|
(snippet
|
gnu: All snippets report errors using exceptions, else return #t.
* gnu/packages/admin.scm, gnu/packages/algebra.scm, gnu/packages/audio.scm,
gnu/packages/backup.scm, gnu/packages/base.scm,
gnu/packages/bioinformatics.scm, gnu/packages/cdrom.scm,
gnu/packages/chez.scm, gnu/packages/code.scm, gnu/packages/compression.scm,
gnu/packages/cross-base.scm, gnu/packages/crypto.scm, gnu/packages/cups.scm,
gnu/packages/databases.scm, gnu/packages/dns.scm, gnu/packages/emacs.scm,
gnu/packages/emulators.scm, gnu/packages/engineering.scm,
gnu/packages/enlightenment.scm, gnu/packages/fpga.scm,
gnu/packages/freedesktop.scm, gnu/packages/ftp.scm, gnu/packages/games.scm,
gnu/packages/gcc.scm, gnu/packages/geo.scm, gnu/packages/ghostscript.scm,
gnu/packages/gl.scm, gnu/packages/glib.scm, gnu/packages/gnome.scm,
gnu/packages/gnuzilla.scm, gnu/packages/graphics.scm, gnu/packages/gtk.scm,
gnu/packages/guile.scm, gnu/packages/irc.scm, gnu/packages/java.scm,
gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/lisp.scm,
gnu/packages/lxde.scm, gnu/packages/machine-learning.scm,
gnu/packages/mail.scm, gnu/packages/maths.scm, gnu/packages/messaging.scm,
gnu/packages/monitoring.scm, gnu/packages/mp3.scm, gnu/packages/music.scm,
gnu/packages/netpbm.scm, gnu/packages/networking.scm, gnu/packages/node.scm,
gnu/packages/nvi.scm, gnu/packages/ocaml.scm, gnu/packages/pdf.scm,
gnu/packages/perl.scm, gnu/packages/php.scm, gnu/packages/plotutils.scm,
gnu/packages/pretty-print.scm, gnu/packages/profiling.scm,
gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm,
gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/robotics.scm,
gnu/packages/sawfish.scm, gnu/packages/scanner.scm, gnu/packages/scheme.scm,
gnu/packages/scribus.scm, gnu/packages/sdl.scm,
gnu/packages/serialization.scm, gnu/packages/shells.scm,
gnu/packages/slang.scm, gnu/packages/smalltalk.scm, gnu/packages/ssh.scm,
gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/tbb.scm,
gnu/packages/terminals.scm, gnu/packages/texinfo.scm,
gnu/packages/text-editors.scm, gnu/packages/textutils.scm,
gnu/packages/tls.scm, gnu/packages/unrtf.scm,
gnu/packages/version-control.scm, gnu/packages/video.scm,
gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wm.scm,
gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xorg.scm:
In all snippets, report errors using exceptions, or else return #t.
2018-03-16 12:47:34 +01:00
|
|
|
'(begin
|
2019-03-15 22:12:07 +01:00
|
|
|
;; Delete non-free blobs: .so files, pre-compiled
|
|
|
|
;; 'locatedriver' executable, etc.
|
|
|
|
(for-each delete-file
|
|
|
|
(find-files "."
|
|
|
|
(lambda (file stat)
|
|
|
|
(elf-file? file))))
|
2018-11-07 22:13:02 +01:00
|
|
|
(delete-file "prnt/hpcups/ImageProcessor.h")
|
2019-03-15 22:14:01 +01:00
|
|
|
|
2018-11-07 22:13:02 +01:00
|
|
|
;; Fix type mismatch.
|
gnu: All snippets report errors using exceptions, else return #t.
* gnu/packages/admin.scm, gnu/packages/algebra.scm, gnu/packages/audio.scm,
gnu/packages/backup.scm, gnu/packages/base.scm,
gnu/packages/bioinformatics.scm, gnu/packages/cdrom.scm,
gnu/packages/chez.scm, gnu/packages/code.scm, gnu/packages/compression.scm,
gnu/packages/cross-base.scm, gnu/packages/crypto.scm, gnu/packages/cups.scm,
gnu/packages/databases.scm, gnu/packages/dns.scm, gnu/packages/emacs.scm,
gnu/packages/emulators.scm, gnu/packages/engineering.scm,
gnu/packages/enlightenment.scm, gnu/packages/fpga.scm,
gnu/packages/freedesktop.scm, gnu/packages/ftp.scm, gnu/packages/games.scm,
gnu/packages/gcc.scm, gnu/packages/geo.scm, gnu/packages/ghostscript.scm,
gnu/packages/gl.scm, gnu/packages/glib.scm, gnu/packages/gnome.scm,
gnu/packages/gnuzilla.scm, gnu/packages/graphics.scm, gnu/packages/gtk.scm,
gnu/packages/guile.scm, gnu/packages/irc.scm, gnu/packages/java.scm,
gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/lisp.scm,
gnu/packages/lxde.scm, gnu/packages/machine-learning.scm,
gnu/packages/mail.scm, gnu/packages/maths.scm, gnu/packages/messaging.scm,
gnu/packages/monitoring.scm, gnu/packages/mp3.scm, gnu/packages/music.scm,
gnu/packages/netpbm.scm, gnu/packages/networking.scm, gnu/packages/node.scm,
gnu/packages/nvi.scm, gnu/packages/ocaml.scm, gnu/packages/pdf.scm,
gnu/packages/perl.scm, gnu/packages/php.scm, gnu/packages/plotutils.scm,
gnu/packages/pretty-print.scm, gnu/packages/profiling.scm,
gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm,
gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/robotics.scm,
gnu/packages/sawfish.scm, gnu/packages/scanner.scm, gnu/packages/scheme.scm,
gnu/packages/scribus.scm, gnu/packages/sdl.scm,
gnu/packages/serialization.scm, gnu/packages/shells.scm,
gnu/packages/slang.scm, gnu/packages/smalltalk.scm, gnu/packages/ssh.scm,
gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/tbb.scm,
gnu/packages/terminals.scm, gnu/packages/texinfo.scm,
gnu/packages/text-editors.scm, gnu/packages/textutils.scm,
gnu/packages/tls.scm, gnu/packages/unrtf.scm,
gnu/packages/version-control.scm, gnu/packages/video.scm,
gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wm.scm,
gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xorg.scm:
In all snippets, report errors using exceptions, or else return #t.
2018-03-16 12:47:34 +01:00
|
|
|
(substitute* "prnt/hpcups/genPCLm.cpp"
|
|
|
|
(("boolean") "bool"))
|
2019-03-15 22:14:01 +01:00
|
|
|
|
|
|
|
;; Install binaries under libexec/hplip instead of
|
|
|
|
;; share/hplip; that'll at least ensure they get stripped.
|
|
|
|
;; It's not even clear that they're of any use though...
|
|
|
|
(substitute* "Makefile.in"
|
|
|
|
(("^dat2drvdir =.*")
|
|
|
|
"dat2drvdir = $(pkglibexecdir)\n")
|
|
|
|
(("^locatedriverdir =.*")
|
|
|
|
"locatedriverdir = $(pkglibexecdir)\n"))
|
gnu: All snippets report errors using exceptions, else return #t.
* gnu/packages/admin.scm, gnu/packages/algebra.scm, gnu/packages/audio.scm,
gnu/packages/backup.scm, gnu/packages/base.scm,
gnu/packages/bioinformatics.scm, gnu/packages/cdrom.scm,
gnu/packages/chez.scm, gnu/packages/code.scm, gnu/packages/compression.scm,
gnu/packages/cross-base.scm, gnu/packages/crypto.scm, gnu/packages/cups.scm,
gnu/packages/databases.scm, gnu/packages/dns.scm, gnu/packages/emacs.scm,
gnu/packages/emulators.scm, gnu/packages/engineering.scm,
gnu/packages/enlightenment.scm, gnu/packages/fpga.scm,
gnu/packages/freedesktop.scm, gnu/packages/ftp.scm, gnu/packages/games.scm,
gnu/packages/gcc.scm, gnu/packages/geo.scm, gnu/packages/ghostscript.scm,
gnu/packages/gl.scm, gnu/packages/glib.scm, gnu/packages/gnome.scm,
gnu/packages/gnuzilla.scm, gnu/packages/graphics.scm, gnu/packages/gtk.scm,
gnu/packages/guile.scm, gnu/packages/irc.scm, gnu/packages/java.scm,
gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/lisp.scm,
gnu/packages/lxde.scm, gnu/packages/machine-learning.scm,
gnu/packages/mail.scm, gnu/packages/maths.scm, gnu/packages/messaging.scm,
gnu/packages/monitoring.scm, gnu/packages/mp3.scm, gnu/packages/music.scm,
gnu/packages/netpbm.scm, gnu/packages/networking.scm, gnu/packages/node.scm,
gnu/packages/nvi.scm, gnu/packages/ocaml.scm, gnu/packages/pdf.scm,
gnu/packages/perl.scm, gnu/packages/php.scm, gnu/packages/plotutils.scm,
gnu/packages/pretty-print.scm, gnu/packages/profiling.scm,
gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm,
gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/robotics.scm,
gnu/packages/sawfish.scm, gnu/packages/scanner.scm, gnu/packages/scheme.scm,
gnu/packages/scribus.scm, gnu/packages/sdl.scm,
gnu/packages/serialization.scm, gnu/packages/shells.scm,
gnu/packages/slang.scm, gnu/packages/smalltalk.scm, gnu/packages/ssh.scm,
gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/tbb.scm,
gnu/packages/terminals.scm, gnu/packages/texinfo.scm,
gnu/packages/text-editors.scm, gnu/packages/textutils.scm,
gnu/packages/tls.scm, gnu/packages/unrtf.scm,
gnu/packages/version-control.scm, gnu/packages/video.scm,
gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wm.scm,
gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xorg.scm:
In all snippets, report errors using exceptions, or else return #t.
2018-03-16 12:47:34 +01:00
|
|
|
#t))))
|
2016-04-29 17:05:47 +02:00
|
|
|
(build-system gnu-build-system)
|
2018-10-26 01:50:50 +02:00
|
|
|
(home-page "https://developers.hp.com/hp-linux-imaging-and-printing")
|
2018-06-20 23:00:20 +02:00
|
|
|
(synopsis "HP printer drivers")
|
|
|
|
(description
|
|
|
|
"Hewlett-Packard printer drivers and PostScript Printer Descriptions
|
|
|
|
(@dfn{PPD}s).")
|
2016-04-29 17:05:47 +02:00
|
|
|
|
|
|
|
;; The 'COPYING' file lists directories where each of these 3 licenses
|
|
|
|
;; applies.
|
|
|
|
(license (list license:gpl2+ license:bsd-3 license:expat))
|
|
|
|
|
|
|
|
;; TODO install apparmor profile files eventually.
|
|
|
|
(arguments
|
|
|
|
`(#:configure-flags
|
|
|
|
`("--disable-network-build"
|
|
|
|
,(string-append "--prefix=" (assoc-ref %outputs "out"))
|
|
|
|
,(string-append "--sysconfdir=" (assoc-ref %outputs "out") "/etc")
|
2018-10-26 01:49:37 +02:00
|
|
|
,(string-append "LDFLAGS=-Wl,-rpath="
|
|
|
|
(assoc-ref %outputs "out") "/lib")
|
2016-04-29 17:05:47 +02:00
|
|
|
;; Disable until mime.types merging works (FIXME).
|
|
|
|
"--disable-fax-build"
|
|
|
|
"--enable-hpcups-install"
|
|
|
|
"--enable-new-hpcups"
|
|
|
|
"--enable-cups_ppd_install"
|
|
|
|
"--enable-cups_drv_install"
|
|
|
|
;; TODO add foomatic drv install eventually.
|
|
|
|
;; TODO --enable-policykit eventually.
|
|
|
|
,(string-append "--with-cupsfilterdir="
|
|
|
|
(assoc-ref %outputs "out") "/lib/cups/filter")
|
|
|
|
,(string-append "--with-cupsbackenddir="
|
|
|
|
(assoc-ref %outputs "out") "/lib/cups/backend")
|
|
|
|
,(string-append "--with-icondir="
|
|
|
|
(assoc-ref %outputs "out") "/share/applications")
|
|
|
|
,(string-append "--with-systraydir="
|
2018-06-19 20:02:42 +02:00
|
|
|
(assoc-ref %outputs "out") "/etc/xdg")
|
|
|
|
"--enable-qt5" "--disable-qt4")
|
2016-04-29 17:05:47 +02:00
|
|
|
|
|
|
|
#:imported-modules ((guix build python-build-system)
|
|
|
|
,@%gnu-build-system-modules)
|
|
|
|
#:modules ((guix build gnu-build-system)
|
|
|
|
(guix build utils)
|
|
|
|
((guix build python-build-system) #:prefix python:))
|
|
|
|
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
(add-after 'unpack 'fix-hard-coded-file-names
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
(let ((out (assoc-ref outputs "out"))
|
|
|
|
;; FIXME: use merged ppds (I think actually only
|
|
|
|
;; drvs need to be merged).
|
|
|
|
(cupsdir (assoc-ref inputs "cups-minimal")))
|
|
|
|
(substitute* "base/g.py"
|
|
|
|
(("'/usr/share;[^']*'")
|
|
|
|
(string-append "'" cupsdir "/share'"))
|
|
|
|
(("'/etc/hp/hplip.conf'")
|
|
|
|
(string-append "'" out
|
|
|
|
"/etc/hp/hplip.conf" "'")))
|
|
|
|
|
|
|
|
(substitute* "Makefile.in"
|
|
|
|
(("[[:blank:]]check-plugin\\.py[[:blank:]]") " ")
|
|
|
|
;; FIXME Use beginning-of-word in regexp.
|
|
|
|
(("[[:blank:]]plugin\\.py[[:blank:]]") " ")
|
|
|
|
(("/usr/include/libusb-1.0")
|
|
|
|
(string-append (assoc-ref inputs "libusb")
|
|
|
|
"/include/libusb-1.0"))
|
2017-12-15 23:30:29 +01:00
|
|
|
(("hplip_statedir =.*$")
|
|
|
|
;; Don't bail out while trying to create
|
|
|
|
;; /var/lib/hplip. We can safely change its value
|
|
|
|
;; here because it's hard-coded in the code anyway.
|
|
|
|
"hplip_statedir = $(prefix)\n")
|
2016-04-29 17:05:47 +02:00
|
|
|
(("hplip_confdir = /etc/hp")
|
|
|
|
;; This is only used for installing the default config.
|
|
|
|
(string-append "hplip_confdir = " out
|
|
|
|
"/etc/hp"))
|
|
|
|
(("halpredir = /usr/share/hal/fdi/preprobe/10osvendor")
|
2018-06-19 20:02:42 +02:00
|
|
|
;; We don't use hal.
|
2016-04-29 17:05:47 +02:00
|
|
|
(string-append "halpredir = " out
|
|
|
|
"/share/hal/fdi/preprobe/10osvendor"))
|
|
|
|
(("rulesdir = /etc/udev/rules.d")
|
|
|
|
;; udev rules will be merged by base service.
|
|
|
|
(string-append "rulesdir = " out
|
|
|
|
"/lib/udev/rules.d"))
|
|
|
|
(("rulessystemdir = /usr/lib/systemd/system")
|
|
|
|
;; We don't use systemd.
|
|
|
|
(string-append "rulessystemdir = " out
|
|
|
|
"/lib/systemd/system"))
|
|
|
|
(("/etc/sane.d")
|
|
|
|
(string-append out "/etc/sane.d"))))))
|
|
|
|
|
2018-06-19 20:02:42 +02:00
|
|
|
;; Wrap bin/* so that the Python libraries are found.
|
2016-04-29 17:05:47 +02:00
|
|
|
(add-after 'install 'wrap-binaries
|
|
|
|
(assoc-ref python:%standard-phases 'wrap)))))
|
|
|
|
|
2018-06-19 20:02:42 +02:00
|
|
|
;; Note that the error messages printed by the tools in the case of
|
|
|
|
;; missing dependencies are often downright misleading.
|
|
|
|
;; TODO: hp-toolbox still fails to start with:
|
|
|
|
;; from dbus.mainloop.pyqt5 import DBusQtMainLoop
|
|
|
|
;; ModuleNotFoundError: No module named 'dbus.mainloop.pyqt5'
|
|
|
|
(inputs
|
|
|
|
`(("cups-minimal" ,cups-minimal)
|
|
|
|
("dbus" ,dbus)
|
|
|
|
("libjpeg" ,libjpeg)
|
|
|
|
("libusb" ,libusb)
|
|
|
|
("python" ,python)
|
|
|
|
("python-dbus" ,python-dbus)
|
|
|
|
("python-pygobject" ,python-pygobject)
|
|
|
|
("python-pyqt" ,python-pyqt)
|
|
|
|
("python-wrapper" ,python-wrapper)
|
|
|
|
("sane-backends" ,sane-backends-minimal)
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
(native-inputs
|
|
|
|
`(("perl" ,perl)
|
|
|
|
("pkg-config" ,pkg-config)))))
|
2017-09-09 22:56:54 +02:00
|
|
|
|
2018-07-19 20:16:43 +02:00
|
|
|
(define-public hplip-minimal
|
|
|
|
(package
|
|
|
|
(inherit hplip)
|
|
|
|
(name "hplip-minimal")
|
|
|
|
(arguments
|
|
|
|
(substitute-keyword-arguments (package-arguments hplip)
|
|
|
|
((#:configure-flags cf)
|
2019-03-15 22:36:46 +01:00
|
|
|
;; Produce a "light build", meaning that only the printer (CUPS) and
|
|
|
|
;; scanner (SANE) support gets built, without all the 'hp-*'
|
|
|
|
;; command-line tools.
|
|
|
|
`(cons "--enable-lite-build"
|
|
|
|
(delete "--enable-qt5" ,cf)))
|
|
|
|
((#:phases phases)
|
|
|
|
;; The 'wrap-binaries' is not needed here since the 'hp-*' programs
|
|
|
|
;; are not installed.
|
|
|
|
`(alist-delete 'wrap-binaries ,phases))))
|
|
|
|
(inputs (remove (match-lambda
|
|
|
|
((label . _)
|
|
|
|
(string-prefix? "python" label)))
|
|
|
|
(package-inputs hplip)))
|
2018-07-19 20:16:43 +02:00
|
|
|
(synopsis "GUI-less version of hplip")))
|
|
|
|
|
2017-09-09 22:56:54 +02:00
|
|
|
(define-public foomatic-filters
|
|
|
|
(package
|
|
|
|
(name "foomatic-filters")
|
2018-01-17 03:55:28 +01:00
|
|
|
(version "4.0.17")
|
2017-09-09 22:56:54 +02:00
|
|
|
(source (origin
|
|
|
|
(method url-fetch)
|
|
|
|
(uri (string-append
|
|
|
|
"http://www.openprinting.org/download/foomatic/"
|
|
|
|
name "-" version ".tar.gz"))
|
|
|
|
(sha256
|
|
|
|
(base32
|
2018-01-17 03:55:28 +01:00
|
|
|
"1qrkgbm5jay2r7sh9qbyf0aiyrsl1mdc844hxf7fhw95a0zfbqm2"))
|
2017-09-09 22:56:54 +02:00
|
|
|
(patches
|
|
|
|
(search-patches "foomatic-filters-CVE-2015-8327.patch"
|
|
|
|
"foomatic-filters-CVE-2015-8560.patch"))))
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
(home-page
|
|
|
|
"https://wiki.linuxfoundation.org/openprinting/database/foomatic")
|
|
|
|
(native-inputs
|
|
|
|
`(("perl" ,perl)
|
|
|
|
("pkg-config" ,pkg-config)))
|
|
|
|
(inputs
|
|
|
|
`(("dbus" ,dbus)
|
|
|
|
("a2ps" ,a2ps)))
|
|
|
|
(arguments
|
|
|
|
'( ;; Specify the installation directories.
|
|
|
|
#:configure-flags (list (string-append "ac_cv_path_CUPS_BACKENDS="
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
"/lib/cups/backend")
|
|
|
|
(string-append "ac_cv_path_CUPS_FILTERS="
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
"/lib/cups/filter")
|
|
|
|
(string-append "ac_cv_path_PPR_INTERFACES="
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
"/lib/ppr/interfaces")
|
|
|
|
(string-append "ac_cv_path_PPR_LIB="
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
"/lib/ppr/lib")
|
|
|
|
|
|
|
|
;; For some reason these are misdiagnosed.
|
|
|
|
"ac_cv_func_malloc_0_nonnull=yes"
|
|
|
|
"ac_cv_func_realloc_0_nonnull=yes")
|
|
|
|
#:test-target "tests"))
|
|
|
|
(synopsis "Convert PostScript to the printer's native format")
|
|
|
|
(description
|
|
|
|
"This package contains filter scripts used by the printer spoolers to
|
|
|
|
convert the incoming PostScript data into the printer's native format using a
|
|
|
|
printer/driver specific, but spooler-independent PPD file.")
|
|
|
|
(license license:gpl2+)))
|
2017-09-09 22:58:06 +02:00
|
|
|
|
|
|
|
(define-public foo2zjs
|
|
|
|
(package
|
|
|
|
(name "foo2zjs")
|
2019-04-20 17:22:43 +02:00
|
|
|
(version "20190413")
|
2017-09-09 22:58:06 +02:00
|
|
|
(source (origin
|
|
|
|
(method url-fetch)
|
|
|
|
;; XXX: This is an unversioned URL!
|
|
|
|
(uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
|
|
|
|
(sha256
|
|
|
|
(base32
|
2019-05-17 02:07:23 +02:00
|
|
|
"0djzp3ddslmzyxkjhzkhkg6qqqm02whjfnfvh5glprkshcskzlg9"))))
|
2017-09-09 22:58:06 +02:00
|
|
|
(build-system gnu-build-system)
|
|
|
|
(arguments
|
|
|
|
'(#:phases (modify-phases %standard-phases
|
|
|
|
(replace 'configure
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
(substitute* (find-files "." "^Makefile$")
|
|
|
|
;; Set the installation directory.
|
|
|
|
(("^PREFIX[[:blank:]]*=.*$")
|
|
|
|
(string-append "PREFIX = "
|
|
|
|
(assoc-ref outputs "out")
|
|
|
|
"\n"))
|
|
|
|
(("^UDEVBIN[[:blank:]]*=.*$")
|
|
|
|
"UDEVBIN = $(PREFIX)/bin\n")
|
|
|
|
;; Don't try to chown/chgrp the installed files.
|
|
|
|
(("-oroot")
|
|
|
|
"")
|
|
|
|
(("-glp")
|
|
|
|
"")
|
|
|
|
;; Placate the dependency checks.
|
|
|
|
(("/usr/include/stdio.h")
|
|
|
|
"/etc/passwd")
|
|
|
|
(("/usr/")
|
|
|
|
"$(PREFIX)/")
|
|
|
|
;; Ensure fixed timestamps in man pages.
|
|
|
|
(("^MODTIME[[:blank:]]*=.*$")
|
|
|
|
"MODTIME = echo Thu Jan 01 01:00:00 1970\n"))
|
|
|
|
#t))
|
|
|
|
(add-after 'install 'remove-pdf
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
;; Remove 'manual.pdf' which is (1) useless (it's a
|
|
|
|
;; concatenation of man pages), and (2) not
|
|
|
|
;; bit-reproducible due to <https://bugs.gnu.org/27593>.
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
|
|
|
(for-each delete-file
|
|
|
|
(find-files out "^manual\\.pdf$"))
|
|
|
|
#t))))
|
|
|
|
#:parallel-build? #f ;broken makefile
|
|
|
|
#:tests? #f ;no tests
|
|
|
|
#:make-flags '("CC=gcc")))
|
|
|
|
(inputs
|
|
|
|
`(("ghostscript" ,ghostscript)
|
|
|
|
("foomatic-filters" ,foomatic-filters))) ;for 'foomatic-rip'
|
|
|
|
(native-inputs
|
|
|
|
`(("bc" ,bc)
|
|
|
|
("groff" ,groff)))
|
2018-01-17 04:10:01 +01:00
|
|
|
(home-page "http://foo2zjs.rkkda.com/")
|
|
|
|
(synopsis "Printer driver for ZjStream-based printers")
|
2017-09-09 22:58:06 +02:00
|
|
|
(description
|
2018-01-17 04:10:01 +01:00
|
|
|
"foo2zjs is a printer driver for printers that use the Zenographics
|
|
|
|
ZjStream wire protocol for their print data, often erroneously referred to as
|
|
|
|
winprinters or GDI printers.
|
|
|
|
|
|
|
|
It supports Minolta/QMS@tie{}Magicolor, Minolta@tie{}Color@tie{}PageWorks/Pro,
|
|
|
|
HP@tie{}LaserJet, and possibly other printers. See @file{README} for details.")
|
|
|
|
(license (list license:expat ; icc2ps/*.[ch]
|
|
|
|
license:gpl2+)))) ; everything else
|
2017-11-01 02:48:14 +01:00
|
|
|
|
|
|
|
(define-public escpr
|
|
|
|
(package
|
|
|
|
(name "escpr")
|
2018-10-03 22:39:34 +02:00
|
|
|
(version "1.6.30")
|
2017-11-01 02:48:14 +01:00
|
|
|
;; XXX: This currently works. But it will break as soon as a newer
|
|
|
|
;; version is available since the URLs for older versions are not
|
|
|
|
;; preserved. An alternative source will be added as soon as
|
|
|
|
;; available.
|
|
|
|
(source (origin
|
|
|
|
(method url-fetch)
|
|
|
|
;; The uri has to be chopped up in order to satisfy guix lint.
|
2018-10-03 22:39:34 +02:00
|
|
|
(uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/08/18/20/"
|
|
|
|
"e94de600e28e510c1cfa158929d8b2c0aadc8aa0/"
|
|
|
|
"epson-inkjet-printer-escpr-1.6.30-1lsb3.2.tar.gz"))
|
2017-11-01 02:48:14 +01:00
|
|
|
(sha256
|
|
|
|
(base32
|
2018-10-03 22:39:34 +02:00
|
|
|
"0m8pyfkixisp0vclwxj340isn15zzisal0v2xvv66kxfd68dzf12"))))
|
2017-11-01 02:48:14 +01:00
|
|
|
(build-system gnu-build-system)
|
|
|
|
(arguments
|
|
|
|
`(#:configure-flags
|
|
|
|
`(,(string-append "--prefix="
|
|
|
|
(assoc-ref %outputs "out"))
|
|
|
|
,(string-append "--with-cupsfilterdir="
|
|
|
|
(assoc-ref %outputs "out") "/lib/cups/filter")
|
|
|
|
,(string-append "--with-cupsppddir="
|
|
|
|
(assoc-ref %outputs "out") "/share/ppd"))))
|
|
|
|
(inputs `(("cups" ,cups-minimal)))
|
|
|
|
(synopsis "ESC/P-R printer driver")
|
|
|
|
(description
|
|
|
|
"This package provides a filter for the Common UNIX Printing
|
|
|
|
System (CUPS). It offers high-quality printing with Seiko Epson color ink jet
|
|
|
|
printers. It can only be used with printers that support the Epson ESC/P-R
|
|
|
|
language.")
|
|
|
|
(home-page "http://download.ebz.epson.net/dsc/search/01/search")
|
|
|
|
(license license:gpl2+)))
|
2019-01-29 11:11:29 +01:00
|
|
|
|
|
|
|
(define-public python-pycups
|
|
|
|
(package
|
|
|
|
(name "python-pycups")
|
|
|
|
(version "1.9.74")
|
|
|
|
(source
|
|
|
|
(origin
|
|
|
|
(method url-fetch)
|
|
|
|
(uri (pypi-uri "pycups" version ".tar.bz2"))
|
|
|
|
(sha256
|
|
|
|
(base32
|
|
|
|
"1ffp7sswhdsfpy88zg0cc8kl04wygkjs01rlm9f0spbwk8jhy2c6"))))
|
|
|
|
(build-system python-build-system)
|
|
|
|
(arguments
|
|
|
|
'(;; Tests require CUPS to be running
|
|
|
|
#:tests? #f))
|
|
|
|
(inputs
|
|
|
|
`(("cups" ,cups)))
|
|
|
|
(home-page "https://github.com/zdohnal/pycups")
|
|
|
|
(synopsis "Python bindings for libcups")
|
|
|
|
(description
|
|
|
|
"This package provides Python bindings for libcups, wrapping the CUPS
|
|
|
|
API.")
|
|
|
|
(license license:gpl2+)))
|