summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/sane/APKBUILD141
-rw-r--r--user/sane/check.patch11
-rw-r--r--user/sane/include.patch11
-rw-r--r--user/sane/network.patch42
-rw-r--r--user/sane/pidfile.patch11
-rw-r--r--user/sane/sane.pre-install5
-rw-r--r--user/sane/saned.initd14
-rw-r--r--user/sane/saned.pre-install5
8 files changed, 240 insertions, 0 deletions
diff --git a/user/sane/APKBUILD b/user/sane/APKBUILD
new file mode 100644
index 000000000..87ad4deb5
--- /dev/null
+++ b/user/sane/APKBUILD
@@ -0,0 +1,141 @@
+# Contributor: Fabio Riga <rifabio@dpersonam.me>
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=sane
+_pkgname=sane-backends
+pkgver=1.0.27
+pkgrel=3
+pkgdesc="Scanner access library"
+url="http://www.sane-project.org/"
+arch="all"
+license="GPL-2.0+ AND GPL-2.0+-with-sane-exception AND Public-Domain"
+depends=""
+makedepends="diffutils file libtool libusb-dev v4l-utils-dev net-snmp-dev libpng-dev
+ libjpeg-turbo-dev tiff-dev libgphoto2-dev libieee1284-dev linux-headers"
+install="saned.pre-install $pkgname.pre-install"
+pkgusers="saned"
+pkggroups="scanner"
+_backends="abaton agfafocus apple artec artec_eplus48u as6e avision bh canon
+ canon630u canon_dr canon_pp cardscan coolscan coolscan2 coolscan3 dc25
+ dc210 dc240 dell1600n_net dmc epjitsu epson epson2 epsonds fujitsu
+ genesys gphoto2 gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpsj5s
+ hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx kvs40xx leo lexmark
+ ma1509 magicolor matsushita microtek microtek2 mustek mustek_pp
+ mustek_usb mustek_usb2 nec net niash p5 pie pieusb pixma plustek
+ plustek_pp ricoh rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan
+ sp15c st400 stv680 tamarack teco1 teco2 teco3 test u12 umax umax_pp
+ umax1220u v4l xerox_mfp"
+case "$CARCH" in
+x86*) _backends="$_backends qcam";;
+esac
+
+_pkgdesc_dell1600n_net="SANE backend for Dell 1600n that supports colour and monochrome scans over ethernet, usb not supported"
+for _backend in $_backends; do
+ subpackages="$subpackages $pkgname-backend-$_backend:_backend"
+done
+subpackages="$pkgname-doc $pkgname-dev $subpackages $pkgname-utils saned
+ $pkgname-udev::noarch $_pkgname::noarch"
+source="https://distfiles.gentoo.org/distfiles/$_pkgname-$pkgver.tar.gz
+ saned.initd
+ include.patch
+ network.patch
+ pidfile.patch
+ check.patch
+ "
+builddir="$srcdir"/$_pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-docdir=/usr/share/doc/$pkgname \
+ --with-usb \
+ --disable-rpath \
+ --disable-locking
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ echo -n "" > "$pkgdir"/etc/sane.d/dll.conf
+ install -Dm644 backend/dll.aliases "$pkgdir"/etc/sane.d/dll.aliases
+}
+
+doc() {
+ default_doc
+ mkdir -p "$subpkgdir"/usr/share/licenses/$_pkgname
+ mv "$subpkgdir"/usr/share/doc/$_pkgname/LICENSE \
+ "$subpkgdir"/usr/share/licenses/$_pkgname
+}
+
+saned() {
+ pkgdesc="Network scanner server"
+ mkdir -p "$subpkgdir"/etc/sane.d "$subpkgdir"/usr
+ mv "$pkgdir"/etc/sane.d/saned.conf "$subpkgdir"/etc/sane.d
+ mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/
+ install -Dm755 "$srcdir"/saned.initd "$subpkgdir"/etc/init.d/saned
+}
+
+utils() {
+ pkgdesc="$pkgdesc (utilities)"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr
+}
+
+udev() {
+ pkgdesc="$pkgdesc (udev rules)"
+ install_if="$pkgname=$pkgver-r$pkgrel udev"
+ install -Dm644 "$builddir"/tools/udev/libsane.rules \
+ "$subpkgdir"/usr/lib/udev/rules.d/49-sane.rules
+ sed -i 's|NAME="%k", ||g' "$subpkgdir"/usr/lib/udev/rules.d/49-sane.rules
+}
+
+backends() {
+ local _backend;
+ pkgdesc="$pkgdesc (metapackage)"
+ depends="$pkgname-utils $pkgname-saned"
+ for _backend in $_backends; do
+ [ "$_backend" = "test" ] && continue
+ depends="$depends $pkgname-backend-$_backend"
+ done
+ mkdir -p "$subpkgdir"
+}
+
+_backend() {
+ local name=${subpkgname#$pkgname-backend-}
+ depends="$pkgname"
+ pkgdesc=$(eval echo \$_pkgdesc_$name)
+ if [ ! "$pkgdesc" ]; then
+ # cut description from man-page
+ pkgdesc=$(tr '\n' ' ' < "$builddir"/doc/$pkgname-$name.man)
+ pkgdesc=${pkgdesc#*\- }
+ pkgdesc=${pkgdesc%% .SH *};
+ fi
+ mkdir -p "$subpkgdir"/usr/lib/$pkgname \
+ "$subpkgdir"/etc/$pkgname.d/dll.d
+ mv "$pkgdir"/usr/lib/sane/lib$pkgname-$name.* \
+ "$subpkgdir"/usr/lib/sane
+ echo "$name" > "$subpkgdir"/etc/sane.d/dll.d/$name
+ if [ -f "$pkgdir"/etc/sane.d/$name.conf ]; then
+ mv "$pkgdir"/etc/sane.d/$name.conf \
+ "$subpkgdir"/etc/sane.d
+ fi
+ if [ -f "$pkgdir"/usr/bin/$name ]; then
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/$name "$subpkgdir"/usr/bin
+ fi
+}
+
+sha512sums="c6552768bfc10216730fc11011c82f74ca0952182019ded3916072147ec09be5c975ce1d37dc3ccea050c488dbdf983c2ca17dcd702644060ba796ae2591f9c5 sane-backends-1.0.27.tar.gz
+0a06eaa28b345202f2bdf8361e06f843bb7a010b7d8f80132f742672c94249c43f64031cefa161e415e2e2ab3a53b23070fb63854283f9e040f5ff79394ac7d1 saned.initd
+1779ff8beb1ba5f9238c25d819a7f0045f7e257c19b511315feb85650e445ca86450a9e1d7ff8650499d3dae808589a6c2e358d5f3f39a3f40ce4999179b86d6 include.patch
+9cb595841f59b5105ecc85e4c0ad8781c52caa2354fb823c920ec467e88afbe47f2b3f4a7a3980bef5dbf22983c5786f051a9d10aea97b4bf7c4a05378592029 network.patch
+09505943f9441854a6c333f19e2535b4a646a8cc060fe82c6261e7d29c72773ebe98d43a91acc951f4336a3c8b4c84ab7c7b0763426136b4b59d9546bc2fa8c0 pidfile.patch
+cfa327209efd9a2a2db7cbcf571852959823aaa19b43d5f6415834cd5ae38b6324ecae16779f6f896aa0d7ac890fe23244100b7d6a68e5e9d52cd38ec82bfac8 check.patch"
diff --git a/user/sane/check.patch b/user/sane/check.patch
new file mode 100644
index 000000000..afbc7ef4c
--- /dev/null
+++ b/user/sane/check.patch
@@ -0,0 +1,11 @@
+--- a/testsuite/sanei/Makefile.in
++++ b/testsuite/sanei/Makefile.in
+@@ -77,7 +77,7 @@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-check_PROGRAMS = sanei_usb_test$(EXEEXT) test_wire$(EXEEXT) \
++check_PROGRAMS = test_wire$(EXEEXT) \
+ sanei_check_test$(EXEEXT) sanei_config_test$(EXEEXT) \
+ sanei_constrain_test$(EXEEXT)
+ subdir = testsuite/sanei
diff --git a/user/sane/include.patch b/user/sane/include.patch
new file mode 100644
index 000000000..518d3b4d5
--- /dev/null
+++ b/user/sane/include.patch
@@ -0,0 +1,11 @@
+--- a/include/sane/sane.h
++++ b/include/sane/sane.h
+@@ -16,6 +16,8 @@
+ #ifndef sane_h
+ #define sane_h
+
++#include <sys/types.h>
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
diff --git a/user/sane/network.patch b/user/sane/network.patch
new file mode 100644
index 000000000..4e422e28d
--- /dev/null
+++ b/user/sane/network.patch
@@ -0,0 +1,42 @@
+diff --git a/sanei/sanei_tcp.c b/sanei/sanei_tcp.c
+index a57d7c7..d0a1e92 100644
+--- a/sanei/sanei_tcp.c
++++ b/sanei/sanei_tcp.c
+@@ -45,6 +45,7 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <time.h>
+
+ #ifdef HAVE_WINSOCK2_H
+ #include <winsock2.h>
+@@ -123,14 +124,27 @@ sanei_tcp_write(int fd, const u_char * buf, int count)
+ ssize_t
+ sanei_tcp_read(int fd, u_char * buf, int count)
+ {
+- ssize_t bytes_recv = 0, rc = 1;
++ ssize_t bytes_recv = 0, rc = 1;
++ int retry = 5;
+
+ while (bytes_recv < count && rc > 0)
+ {
+ rc = recv(fd, buf+bytes_recv, count-bytes_recv, 0);
++ DBG(1, "%s: bytes received %d\n", __FUNCTION__, rc);
+ if (rc > 0)
+ bytes_recv += rc;
+-
++ else {
++ if ( errno == EAGAIN && retry-- ) {
++ DBG(1, "%s: waiting %d\n", __FUNCTION__, retry);
++ /* wait for max 1s */
++ struct timespec req;
++ struct timespec rem;
++ req.tv_sec = 0;
++ req.tv_nsec= 100000000;
++ nanosleep(&req, &rem);
++ rc = 1;
++ }
++ }
+ }
+ return bytes_recv;
+ }
diff --git a/user/sane/pidfile.patch b/user/sane/pidfile.patch
new file mode 100644
index 000000000..457755bdb
--- /dev/null
+++ b/user/sane/pidfile.patch
@@ -0,0 +1,11 @@
+--- a/frontend/saned.c
++++ b/frontend/saned.c
+@@ -224,7 +224,7 @@
+ int numchildren;
+
+ #define SANED_CONFIG_FILE "saned.conf"
+-#define SANED_PID_FILE "/var/run/saned.pid"
++#define SANED_PID_FILE "/run/saned/saned.pid"
+
+ #define SANED_SERVICE_NAME "sane-port"
+ #define SANED_SERVICE_PORT 6566
diff --git a/user/sane/sane.pre-install b/user/sane/sane.pre-install
new file mode 100644
index 000000000..b75c867de
--- /dev/null
+++ b/user/sane/sane.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+addgroup -S scanner 2>/dev/null
+
+exit 0
diff --git a/user/sane/saned.initd b/user/sane/saned.initd
new file mode 100644
index 000000000..6482073ef
--- /dev/null
+++ b/user/sane/saned.initd
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+
+description="SANE network scanner server"
+
+owner=saned
+pidfile=/run/saned/saned.pid
+cfgfile=/etc/sane.d/saned.conf
+command=/usr/sbin/saned
+command_args="-a $owner"
+required_files="$cfgfile"
+
+start_pre() {
+ checkpath -dm755 -o $owner ${pidfile%/*}
+}
diff --git a/user/sane/saned.pre-install b/user/sane/saned.pre-install
new file mode 100644
index 000000000..caad990d9
--- /dev/null
+++ b/user/sane/saned.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+adduser -SDH -h /run/saned -s /sbin/nologin -G scanner -g saned saned 2>/dev/null
+
+exit 0