summaryrefslogtreecommitdiff
path: root/gnu/packages/scanner.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/scanner.scm')
-rw-r--r--gnu/packages/scanner.scm104
1 files changed, 80 insertions, 24 deletions
diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index 02424f0da2..e7a5a2b210 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019, 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
@@ -23,6 +23,7 @@
(define-module (gnu packages scanner)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages compression)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
@@ -35,15 +36,70 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages textutils)
+ #:use-module (gnu packages tls)
#:use-module (gnu packages xml)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix gexp)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils))
+(define-public sane-airscan
+ (package
+ (name "sane-airscan")
+ (version "0.99.27")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alexpevzner/sane-airscan")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1syxsih1kdnz9slsg5a92bqnllagm4cybqk4n2y6mbkqn6h0zlnv"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:make-flags
+ #~(list (string-append "prefix=" #$output)
+ (string-append "libdir=$(prefix)/lib"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure )))) ; no configure script
+ (native-inputs
+ (list pkg-config))
+ (inputs
+ (list avahi
+ gnutls
+ libjpeg-turbo
+ libpng
+ libxml2
+ sane-backends))
+ (home-page "https://github.com/alexpevzner/sane-airscan")
+ (synopsis "SANE backend for eSCL (AirScan) and WSD document scanners")
+ (description ; no @acronym{eSCL} because the meaning isn't officially known
+ "This SANE backend lets you scan documents and images from scanners and
+multi-function printers that speak eSCL (marketed as ``AirScan'') or
+@acronym{WSD, Web Services for Devices} (or ``WS-Scan'').
+
+Both are vendor-neutral protocols that allow ``driverless'' scanning over IPv4
+and IPv6 networks without the vendor-specific drivers that make up most of the
+sane-backends collection. This is similar to how most contemporary printers
+speak the universal @acronym{IPP, Internet Printing Protocol}.
+
+Only scanners that support eSCL will also work over USB. This requires a
+suitable IPP-over-USB daemon like ipp-usb to be installed and configured.
+
+Any eSCL or WSD-capable scanner should just work. sane-airscan automatically
+discovers and configures devices, including which protocol to use. It was
+successfully tested with many devices from Brother, Canon, Dell, Kyocera,
+Lexmark, Epson, HP, OKI, Panasonic, Pantum, Ricoh, Samsung, and Xerox, with both
+WSD and eSCL.")
+ (license (list license:gpl2+ ; the combined work
+ license:expat)))) ; http_parser.[ch]
+
(define-public sane-backends-minimal
(package
(name "sane-backends-minimal")
@@ -207,29 +263,29 @@ package contains the library and drivers.")))
(base32 "0pvy4qirfjdfm8aj6x5rkbgl7hk3jfa2s21qkk8ic5dqfjjab75n"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags
- (list "--disable-debug"
- "--sysconfdir=/etc")
- #:phases
- (modify-phases %standard-phases
- (replace 'install
- (lambda* (#:key make-flags outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (conf (string-append out "/etc/scanbd")))
- (apply invoke "make" "install"
- ;; Install example configuration to the store, not /etc.
- ;; These don't inherit from each other, so we need both.
- (string-append "scanbdconfdir=" conf)
- (string-append "scannerconfdir=" conf "/scanner.d")
- make-flags))))
- (add-after 'install 'install-extra-documentation
- ;; The README provides more detailed set-up instructions than the
- ;; man page.
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (doc (string-append out "/share/doc/"
- ,name "-" ,version)))
- (install-file "doc/README.txt" doc)))))))
+ (list #:configure-flags
+ #~(list "--disable-debug"
+ "--sysconfdir=/etc"
+ "CFLAGS=-Wno-error") ; warnings should never be fatal
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (let ((conf (string-append #$output "/etc/scanbd")))
+ (apply invoke "make" "install"
+ ;; Install example configuration to the store, not
+ ;; /etc. These don't inherit from each other, so
+ ;; we need both.
+ (string-append "scanbdconfdir=" conf)
+ (string-append "scannerconfdir=" conf "/scanner.d")
+ make-flags))))
+ (add-after 'install 'install-extra-documentation
+ ;; The README provides more detailed set-up instructions than
+ ;; the man page.
+ (lambda _
+ (let ((doc (string-append #$output "/share/doc/"
+ #$name "-" #$version)))
+ (install-file "doc/README.txt" doc)))))))
(native-inputs
(list pkg-config))
(inputs