Subject: [PATCH] gnu: Add utsushi.

From: "joaog.bastos" <[email-masked]>
Date: Sun, 17 Apr 2022 00:31:30 +0000

Empty Message

From 9743540edfd9e87b7f8fc0057f9fb5acc6bd7917 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Gabriel?= <[email-masked]>
Date: Sat, 16 Apr 2022 18:05:44 -0300
Subject: [PATCH] gnu: Add utsushi.

* gnu/packages/scanner.scm (utsushi): New variable.
(sane-backends)[inputs, arguments]: Add utsushi backend.
---
 gnu/packages/scanner.scm | 70 +++++++++++++++++++++++++++++++++++++---
 1 file changed, 66 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index e7a5a2b..582b201 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Andy Patterson <[email-masked]>
 ;;; Copyright © 2017, 2019, 2020, 2022 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2018 Efraim Flashner <[email-masked]>
+;;; Copyright © 2022 João Gabriel <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@ (define-module (gnu packages scanner)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
@@ -31,6 +33,7 @@ (define-module (gnu packages scanner)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
@@ -203,14 +206,16 @@ (define-public sane-backends-minimal
 package contains the library, but no drivers.")
     (license license:gpl2+))) ; plus linking exception
 
-;; This variant links in the hpaio backend provided by hplip, which adds
-;; support for HP scanners whose backends are not maintained by the SANE
-;; project, and builds all of those backends.
+;; This variant links in the hpaio backend provided by hplip and the
+;; utsushi backend, which adds support for some HP and EPSON scanners,
+;; respectively, whose backends are not maintained by the SANE project,
+;; and builds all of those backends.
 (define-public sane-backends
   (package/inherit sane-backends-minimal
     (name "sane-backends")
     (inputs
      `(("hplip" ,(@ (gnu packages cups) hplip-minimal))
+       ("utsushi" ,utsushi)
        ("libjpeg" ,libjpeg-turbo)       ; for pixma/epsonds/other back ends
        ("libpng" ,libpng)               ; support ‘scanimage --format=png’
        ("libxml2" ,libxml2)             ; for pixma back end
@@ -230,7 +235,8 @@ (define-public sane-backends
            (add-after 'unpack 'add-backends
              (lambda _
                (substitute* "backend/dll.conf.in"
-                 (("hp5590" all) (format #f "~a~%~a" all "hpaio")))
+                 (("hp5590" all) (format #f "~a~%~a" all "hpaio"))
+                 (("v4l" all) (format #f "~a~%~a" all "utsushi")))
                #t))
            (add-after 'install 'install-hpaio
              (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -242,6 +248,17 @@ (define out (string-append (assoc-ref outputs "out")
                 (lambda (file)
                   (symlink file (string-append out "/" (basename file))))
                 (find-files hplip))
+               #t))
+           (add-after 'install-hpaio 'install-utsushi
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (define utsushi (string-append (assoc-ref inputs "utsushi")
+                                              "/lib/utsushi/sane"))
+               (define out (string-append (assoc-ref outputs "out")
+                                          "/lib/sane"))
+               (for-each
+                 (lambda (file)
+                   (symlink file (string-append out "/" (basename file))))
+                 (find-files utsushi))
                #t))))))
     (synopsis
      "Raster image scanner library and drivers, with scanner support")
@@ -393,3 +410,48 @@ (define-public xsane
 XSane talks to scanners through the @acronym{SANE, Scanner Access Now Easy}
 back-end library, which supports almost all existing scanners.")
     (license license:gpl2+)))
+
+(define-public utsushi
+  (let ((commit "839d06a5a80b353cb604eb9f7d352a1648ab1fdf"))
+    (package
+      (name "utsushi")
+      (version (git-version "0.65.0" "1" commit))
+      (source (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://gitlab.com/utsushi/utsushi")
+               (commit commit)))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0i6ipqy61abbsmqqqy5sii0vlib146snvp975sgjmv4nzy9mwf24"))))
+      (build-system gnu-build-system)
+      (arguments
+        `(#:tests? #f
+          #:configure-flags
+          (list (string-append "--with-boost-libdir="
+                               (assoc-ref %build-inputs "boost")
+                               "/lib")
+                "CXXFLAGS=-Wno-error")
+          #:phases
+          (modify-phases %standard-phases
+            (add-before 'bootstrap 'zap-unnecessary-git-dependency
+              (lambda _
+                (substitute* "configure.ac"
+                  (("-m4_esyscmd_s\\(\\[git describe --always\\]\\)") ""))))
+            (add-after 'install 'install-udev-rules
+              (lambda* (#:key outputs #:allow-other-keys)
+                (let ((out (assoc-ref outputs "out")))
+                  (mkdir-p (string-append out "/lib/udev/rules.d"))
+                  (install-file "drivers/esci/utsushi-esci.rules"
+                                (string-append out "/lib/udev/rules.d"))))))))
+      (inputs (list boost eudev sane-backends-minimal libusb
+                    libjpeg-turbo imagemagick libtiff zlib))
+      (native-inputs (list util-linux autoconf autoconf-archive automake
+                           gettext-minimal libtool libxslt pkg-config))
+      (home-page "https://gitlab.com/utsushi/utsushi")
+      (synopsis "Image scanning software for EPSON devices")
+      (description "Utsushi is a set of applications for image scanning with
+support for a number of EPSON scanners, including a compatibility driver to
+interface with software built around the @acronym{SANE, Scanner Access Now Easy}
+standard.")
+      (license license:gpl3))))
-- 
2.35.1