This is a patch that adds hplip. Note that hplip builds and installs but we don't do any of the merging of different packages' ppds etc yet [the majority of the merging will be in "services" and not in "packages", though].
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index ff3d152..ca637c1 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -26,6 +26,10 @@ #:use-module (gnu packages) #:use-module (gnu packages avahi) #:use-module (gnu packages compression) + #:use-module (gnu packages libusb) + #:use-module (gnu packages autotools) + #:use-module (gnu packages python) + #:use-module (gnu packages scanner) #:use-module (gnu packages image) #:use-module (gnu packages fonts) ;font-dejavu #:use-module (gnu packages fontutils) @@ -297,3 +301,59 @@ device-specific programs to convert and print many types of files.") ("gnutls" ,gnutls) ("cups-filters" ,cups-filters) ("zlib" ,zlib))))) + +(define-public hplip + (package + (name "hplip") + (version "3.16.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/hplip/" + "/hplip-" version ".tar.gz")) + (sha256 + (base32 + "1nflgrbyl0fz35djnkn7qsfr5g4sh8lixqna9jvs52wasjllbj7j")))) + (build-system gnu-build-system) + (home-page "http://hplipopensource.com/") + (synopsis "HP Printer Drivers") + (description "HP Printer Drivers and PPDs. You can use the PPDs with CUPS as well.") + (license (list license:gpl2 license:bsd-3)) ; FIXME and which MIT + ; FIXME remove Binary plugin-ins, hp-plugin + ; FIXME PPDs use "hpcups" in cupsFilter. In which directory? + ; TODO install apparmor profile files + (arguments `(#:configure-flags `("--disable-network-build" + ,(string-append "--prefix=" (assoc-ref %outputs "out")) + ,(string-append "--sysconfdir=" (assoc-ref %outputs "out") "/etc") + "--disable-fax-build" ; until mime.types merging works; FIXME re-enable + ,(string-append "--with-cupsfilterdir=" (assoc-ref %outputs "out") "/lib/cups/filter") ; TODO merge + ,(string-append "--with-cupsbackenddir=" (assoc-ref %outputs "out") "/lib/cups/backend") ; TODO merge + ,(string-append "--with-icondir=" (assoc-ref %outputs "out") "/share/applications") ; TODO merge + ,(string-append "--with-systraydir=" (assoc-ref %outputs "out") "/etc/xdg")) ; TODO merge + ; #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))) + #:phases (alist-cons-after + 'fix-libusb 'autoreconf + (lambda _ + (setenv "AUTOMAKE" "automake --foreign") + (zero? (system* "autoreconf" "-fi"))) + (alist-cons-after 'unpack 'fix-libusb + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Makefile.am" (("/usr/include/libusb-1.0") (string-append (assoc-ref inputs "libusb") "/include/libusb-1.0")) + (("hplip_statedir[ ]*=[ ]*/var/lib/hp") (string-append "hplip_statedir = " (assoc-ref outputs "out") "/var/lib/hp")) ; only for the installer. + (("hplip_confdir[ ]*=[ ]*/etc/hp") (string-append "hplip_confdir = " (assoc-ref outputs "out") "/etc/hp")) ; only for installing the default config + (("halpredir[ ]*=[ ]*/usr/share/hal/fdi/preprobe/10osvendor") (string-append "halpredir = " (assoc-ref outputs "out") "/share/hal/fdi/preprobe/10osvendor")) ; I don't think we use hal, so who cares? + (("rulesdir[ ]*=[ ]*/etc/udev/rules.d") (string-append "rulesdir = " (assoc-ref outputs "out") "/lib/udev/rules.d")) ; will be merged by base service + (("rulessystemdir=/usr/lib/systemd/system") (string-append "rulessystemdir = " (assoc-ref outputs "out") "/lib/systemd/system")) ; dummy + (("/etc/sane.d") (string-append (assoc-ref outputs "out") "/etc/sane.d")))) + %standard-phases)))) + (inputs `(("libjpeg" ,libjpeg) + ("cups-minimal" ,cups-minimal) + ("libusb" ,libusb) + ("python" ,python) ; FIXME propagated-inputs ?? + ("sane-backends" ,sane-backends) + ("dbus" ,dbus))) + (native-inputs `(("pkg-config" ,pkg-config) + ("automake" ,automake) + ("autoconf" ,autoconf) + ("libtool" ,libtool) + ("python" ,python) ; patch-shebang warning +))))