diff options
-rw-r--r-- | user/sane/APKBUILD | 141 | ||||
-rw-r--r-- | user/sane/check.patch | 11 | ||||
-rw-r--r-- | user/sane/include.patch | 11 | ||||
-rw-r--r-- | user/sane/network.patch | 42 | ||||
-rw-r--r-- | user/sane/pidfile.patch | 11 | ||||
-rw-r--r-- | user/sane/sane.pre-install | 5 | ||||
-rw-r--r-- | user/sane/saned.initd | 14 | ||||
-rw-r--r-- | user/sane/saned.pre-install | 5 |
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 |