guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v7] Add hplip


From: Danny Milosavljevic
Subject: [PATCH v7] Add hplip
Date: Thu, 24 Mar 2016 00:56:12 +0100

> python-wrapper wraps python, so that python3 is presented to the system
> as python and as python3. Does the package really need both?

Yes. Many of the hplip scripts use #!/usr/bin/env python and some use 
#!/usr/bin/env python3 . There's a script "hplip-install" which is kinda like 
patch-shebang, though. 

Just tried: If I don't have python-wrapper as input, lots and lots of the 
binaries have #!/usr/bin/env python . Otherwise they have 
#!/gnu/store/n88c56xy9ymb8rvf9cz0qwwgmbiz0vw7-python-wrapper-3.4.3/bin/python 
directly.

diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index ff3d152..73dbccc 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,107 @@ 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 "Hewlett-Packard Printer Drivers and PPDs.")
+    ;; Note: X11 license is only used in install-sh.
+    (license (list license:gpl2 license:bsd-3 license:expat license:x11))
+    ;; 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")
+         ;; 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="
+                         (assoc-ref %outputs "out")
+                         "/etc/xdg"))
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'fix-libusb
+                   (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.am"
+                         (("[[: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"))
+                         (("hplip_statedir[ ]*=[ ]*/var/lib/hp")
+                          ;; This is only user in the installer.
+                          (string-append "hplip_statedir = " out
+                                         "/var/lib/hp"))
+                         (("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")
+                          ;; Note: We don't use hal.
+                          (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"))))))
+                  (add-after 'fix-libusb 'autoreconf
+                   (lambda _
+                     (setenv "AUTOMAKE" "automake --foreign")
+                     (zero? (system* "autoreconf" "-fi")))))))
+    ;; Python3 support is available starting from HPLIP-3.15.2 .
+    (inputs `(("libjpeg" ,libjpeg)
+              ("cups-minimal" ,cups-minimal)
+              ("libusb" ,libusb)
+              ("sane-backends" ,sane-backends)
+              ("dbus" ,dbus)
+              ("python-wrapper" ,python-wrapper)
+              ("python" ,python)
+              ;; TODO: Make hp-setup find python-dbus.
+              ("python-dbus" ,python-dbus)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("automake" ,automake)
+                     ("autoconf" ,autoconf)
+                     ("libtool" ,libtool)))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]