;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
+ #:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages fonts) ; font-dejavu
#:use-module (gnu packages fontutils)
#:use-module (gnu packages qt)
#:use-module (gnu packages scanner)
#:use-module (gnu packages tls)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix download)
- #:use-module (guix svn-download)
+ #:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match))
+(define-public brlaser
+ (let ((commit "9d7ddda8383bfc4d205b5e1b49de2b8bcd9137f1")
+ (revision "1"))
+ (package
+ (name "brlaser")
+ (version (git-version "6" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pdewacht/brlaser")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1drh0nk7amn9a8wykki4l9maqa4vy7vwminypfy1712alwj31nd4"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "-DCUPS_DATA_DIR="
+ (assoc-ref %outputs "out")
+ "/share/cups")
+ (string-append "-DCUPS_SERVER_BIN="
+ (assoc-ref %outputs "out")
+ "/lib/cups"))))
+ (inputs
+ `(("ghostscript" ,ghostscript)
+ ("cups" ,cups)
+ ("zlib" ,zlib)))
+ (home-page "https://github.com/pdewacht/brlaser")
+ (synopsis "Brother laser printer driver")
+ (description "Brlaser is a CUPS driver for Brother laser printers. This
+driver is known to work with these printers:
+
+@enumerate
+@item Brother DCP-1510 series
+@item Brother DCP-1600 series
+@item Brother DCP-7030
+@item Brother DCP-7040
+@item Brother DCP-7055
+@item Brother DCP-7055W
+@item Brother DCP-7060D
+@item Brother DCP-7065DN
+@item Brother DCP-7080
+@item Brother DCP-L2500D series
+@item Brother DCP-L2520D series
+@item Brother DCP-L2540DW series
+@item Brother HL-1110 series
+@item Brother HL-1200 series
+@item Brother HL-2030 series
+@item Brother HL-2140 series
+@item Brother HL-2220 series
+@item Brother HL-2270DW series
+@item Brother HL-5030 series
+@item Brother HL-L2300D series
+@item Brother HL-L2320D series
+@item Brother HL-L2340D series
+@item Brother HL-L2360D series
+@item Brother MFC-1910W
+@item Brother MFC-7240
+@item Brother MFC-7360N
+@item Brother MFC-7365DN
+@item Brother MFC-7840W
+@item Brother MFC-L2710DW series
+@item Lenovo M7605D
+@end enumerate")
+ (license license:gpl2+))))
+
(define-public cups-filters
(package
(name "cups-filters")
- (version "1.26.2")
+ (version "1.27.4")
(source(origin
(method url-fetch)
(uri
"cups-filters-" version ".tar.xz"))
(sha256
(base32
- "1a8x6zgw3m4717gw3842gsrgjl05q92xygy4rp5vwr1d1xjmyxp1"))
+ "110b1xhb5vfpcx0zq9kkas7pj281skx5dpnnr22idx509jfdzj8b"))
(modules '((guix build utils)))
(snippet
;; install backends, banners and filters to cups-filters output
(("/usr/local/lib/cups/filter")
(string-append out "/lib/cups/filter")))
#t)))
- (add-after 'unpack 'patch-for-poppler
- (lambda _
- (substitute* "filter/pdf.cxx"
- (("GooString \\*field_name;" m)
- (string-append "const " m)))
- #t))
(add-after 'install 'wrap-filters
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Some filters expect to find 'gs' in $PATH. We cannot
("ijs" ,ijs)
("dbus" ,dbus)
("lcms" ,lcms)
- ("libjpeg" ,libjpeg)
+ ("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libtiff" ,libtiff)
("glib" ,glib)
(define-public cups-minimal
(package
(name "cups-minimal")
- (version "2.3.1")
+ (version "2.3.3")
(source
(origin
(method url-fetch)
version "/cups-" version "-source.tar.gz"))
(sha256
(base32
- "1kkpmj17205j8w9hdff2bfpk6lwdmr3gx0j4r35nhgvya24rvjhv"))))
+ "1vpk0b2vq830f8fvf9z8qjsm5k141i7pi8djbinpnr78pi4dj7r6"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(license license:asl2.0)))
(define-public cups
- (package (inherit cups-minimal)
+ (package/inherit cups-minimal
(name "cups")
(arguments
`(;; Three tests fail:
(define-public hplip
(package
(name "hplip")
- (version "3.20.2")
+ (version "3.21.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/hplip/hplip/" version
"/hplip-" version ".tar.gz"))
(sha256
(base32
- "00vcbpnp478l2v61mlxb4kr6q3gzkxspm4lwfky39f6ck72pqxb7"))
+ "0hbwx9d4c8177vi0gavz9pxi7rc97jciacndp90ms8327shj2121"))
(modules '((guix build utils)))
(patches (search-patches "hplip-remove-imageprocessor.patch"))
(snippet
"locatedriverdir = $(pkglibexecdir)\n"))
#t))))
(build-system gnu-build-system)
+ (outputs (list "out" "ppd"))
(home-page "https://developers.hp.com/hp-linux-imaging-and-printing")
(synopsis "HP printer drivers")
(description
(assoc-ref %outputs "out") "/lib")
;; 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-hpppddir="
+ (assoc-ref %outputs "ppd") "/share/ppd/HP")
,(string-append "--with-icondir="
(assoc-ref %outputs "out") "/share/applications")
,(string-append "--with-systraydir="
(string-append "rulessystemdir = " out
"/lib/systemd/system"))
(("/etc/sane.d")
- (string-append out "/etc/sane.d"))))))
+ (string-append out "/etc/sane.d")))
+ #t)))
+ (add-before 'configure 'fix-build-with-python-3.8
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((python (assoc-ref inputs "python")))
+ ;; XXX: The configure script looks for Python headers in the
+ ;; wrong places as of version 3.20.3. Help it by adding the
+ ;; include directory on C_INCLUDE_PATH.
+ (when python
+ (setenv "C_INCLUDE_PATH"
+ (string-append python "/include/python"
+ (python:python-version python)
+ ":" (getenv "C_INCLUDE_PATH"))))
+ #t)))
(add-after 'install 'install-models-dat
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(inputs
`(("cups-minimal" ,cups-minimal)
("dbus" ,dbus)
- ("libjpeg" ,libjpeg)
+ ("libjpeg" ,libjpeg-turbo)
("libusb" ,libusb)
("python" ,python)
("python-dbus" ,python-dbus)
("pkg-config" ,pkg-config)))))
(define-public hplip-minimal
- (package
- (inherit hplip)
+ (package/inherit hplip
(name "hplip-minimal")
(arguments
(substitute-keyword-arguments (package-arguments hplip)
(define-public foo2zjs
(package
(name "foo2zjs")
- (version "20200207")
- (source (origin
- (method url-fetch)
- ;; XXX: This is an unversioned URL!
- (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
- (sha256
- (base32
- "0pf1sm29gnrhhpyvq95jskvr874h5r4kls9w10gc24z23fjmr5zx"))))
+ (version "20200610.1")
+ (source
+ (origin
+ (method url-fetch)
+ ;; The upstream tarball is unversioned: use a stable snapshot.
+ (uri (string-append "https://web.archive.org/web/20210224094943if_/"
+ "http://foo2zjs.rkkda.com/foo2zjs.tar.gz"))
+ (sha256
+ (base32 "03ncif50n7ck7drggqxbc7w0kgzdb90ha0dbvqk98ky8lw3k76xd"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(("^MODTIME[[:blank:]]*=.*$")
"MODTIME = echo Thu Jan 01 01:00:00 1970\n"))
#t))
+ (add-before 'install 'make-install-dirs
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Make missing install dirs
+ (let ((out (assoc-ref outputs "out"))
+ (dirs '("/share/cups/model"
+ "/share/foomatic/db/source/opt"
+ "/share/foomatic/db/source/printer"
+ "/share/foomatic/db/source/driver"
+ "/lib/cups/filter")))
+ (for-each (lambda (dir)
+ (mkdir-p (string-append out dir)))
+ dirs))))
+ (add-after 'install 'wrap-wrappers
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (ghostscript (assoc-ref inputs "ghostscript"))
+ (coreutils (assoc-ref inputs "coreutils"))
+ (sed (assoc-ref inputs "sed")))
+ (for-each (lambda (file)
+ (wrap-program file
+ `("PATH" ":" prefix
+ (,(string-append ghostscript "/bin:"
+ coreutils "/bin:"
+ sed "/bin")))))
+ (find-files (string-append
+ out "/bin") "wrapper$")))))
+ (add-after 'install 'install-cups-filters-symlinks
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (file)
+ (symlink file
+ (string-append out "/lib/cups/filter/"
+ (basename file))))
+ (find-files (string-append out "/bin"))))))
(add-after 'install 'remove-pdf
(lambda* (#:key outputs #:allow-other-keys)
;; Remove 'manual.pdf' which is (1) useless (it's a
#:tests? #f ;no tests
#:make-flags '("CC=gcc")))
(inputs
- `(("ghostscript" ,ghostscript)
+ `(("coreutils" ,coreutils)
+ ("sed" ,sed)
+ ("ghostscript" ,ghostscript)
("foomatic-filters" ,foomatic-filters))) ;for 'foomatic-rip'
(native-inputs
`(("bc" ,bc)
(license (list license:expat ; icc2ps/*.[ch]
license:gpl2+)))) ; everything else
-(define-public escpr
+(define-public epson-inkjet-printer-escpr
(package
- (name "escpr")
- (version "1.6.30")
+ (name "epson-inkjet-printer-escpr")
+ (version "1.7.9")
;; 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.
- (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"))
- (sha256
- (base32
- "0m8pyfkixisp0vclwxj340isn15zzisal0v2xvv66kxfd68dzf12"))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/12/50/95/"
+ "322b8d6b915ab85add33d41f04ba5130866aadbe/"
+ "epson-inkjet-printer-escpr-1.7.9-1lsb3.2.tar.gz"))
+ (sha256
+ (base32 "136hhvhimxfnrdn3ksbiswjxgsifrwlp3zz8h0v63w4k1vkzpgc0"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags
- `(,(string-append "--prefix="
+ `(#:modules
+ ((srfi srfi-26)
+ ,@%gnu-build-system-modules)
+ #:configure-flags
+ `("--disable-static"
+ ,(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)))
+ (assoc-ref %outputs "out") "/share/cups/model"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-autotools-version-requirement
+ (lambda _
+ (substitute* "aclocal.m4"
+ (("1\\.15")
+ ,(package-version automake)))
+ (substitute* "configure"
+ (("^(ACLOCAL=).*" _ match)
+ (string-append match "aclocal"))
+ (("^(AUTOMAKE=).*" _ match)
+ (string-append match "automake")))
+ #t))
+ (add-after 'install 'compress-PPDs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (with-directory-excursion out
+ (for-each (cut invoke "gzip" "-9" <>)
+ (find-files "share/cups" "\\.ppd$")))))))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)))
+ (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
+ "This package provides a filter for @acronym{CUPS, the Common UNIX Printing
+System} that offers high-quality printing with Seiko@tie{}Epson color ink jet
+printers. It can be used only with printers that support the Epson@tie{}ESC/P-R
language.")
- (home-page "http://download.ebz.epson.net/dsc/search/01/search")
+ (home-page "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX")
(license license:gpl2+)))
+(define-public escpr
+ (deprecated-package "escpr" epson-inkjet-printer-escpr))
+
(define-public splix
- ;; The last release was in 2009. The SVN repository contains 5 years of
- ;; unreleased bug fixes and support for newer printer models.
- (let ((revision 315))
+ ;; Last released in 2009 <https://sourceforge.net/projects/splix/files/>.
+ ;; Last SVN commit was 2013 <https://svn.code.sf.net/p/splix/code/splix/>.
+ ;; Use a more maintained fork with several bug fixes and support for newer
+ ;; printer models.
+ (let ((commit "76268c4dd7dbc8218ea7426401104c3b40cc707a")
+ (revision "315"))
(package
(name "splix")
- (version (string-append "2.0.0-" (number->string revision)))
+ (version (git-version "2.0.0" revision commit))
(source
(origin
- (method svn-fetch)
- (uri (svn-reference
- (url "https://svn.code.sf.net/p/splix/code/splix/")
- (revision revision)))
- (file-name (string-append name "-" version "-checkout"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/ScumCoder/splix")
+ (commit commit)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "16wbm4xnz35ca3mw2iggf5f4jaxpyna718ia190ka6y4ah932jxl"))))
+ (base32 "1mxsvllwwr1v8sgrax0b7gkajjhnm0l06s67spmaxz47lyll1qab"))))
(build-system gnu-build-system)
- ;; 90% (3.8 MiB) of output are .ppd files. Don't install them by default:
- ;; CUPS has been able to read the .drv sources directly since version 1.2.
+ ;; PPDs have been obsolete since CUPS 1.2 and make up 90% of total size.
(outputs (list "out" "ppd"))
(arguments
- '(#:make-flags
+ `(#:modules
+ ((srfi srfi-26)
+ ,@%gnu-build-system-modules)
+ #:make-flags
(list (string-append "CUPSDRV="
(assoc-ref %outputs "out") "/share/cups/drv")
(string-append "CUPSFILTER="
"THREADS=4") ; compress and print faster
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'enter-subdirectory
+ ;; The git repository replicates the top-level SVN layout.
+ (lambda _
+ (chdir "splix")
+ #t))
(delete 'configure) ; no configure script
(add-before 'build 'build-.drv-files
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "drv" make-flags)))
(add-after 'install 'install-.drv-files
(lambda* (#:key make-flags #:allow-other-keys)
- (apply invoke "make" "install" "DRV_ONLY=1" make-flags))))
+ (apply invoke "make" "install" "DRV_ONLY=1" make-flags)))
+ (add-after 'install 'compress-PPDs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((ppd (assoc-ref outputs "ppd")))
+ (for-each (cut invoke "gzip" "-9" <>)
+ (find-files ppd "\\.ppd$"))))))
#:tests? #f)) ; no test suite
(inputs
`(("cups" ,cups-minimal)
- ("zlib" ,zlib)
-
- ;; This dependency can be dropped by setting DISABLE_JBIG=1, but the
- ;; result will not support some printers like the Samsung CLP-600.
- ("jbigkit" ,jbigkit)))
+ ("jbigkit" ,jbigkit)
+ ("zlib" ,zlib)))
(synopsis "QPDL (SPL2) printer driver")
(description
"SpliX is a set of CUPS drivers for printers that speak @acronym{QPDL,