aboutsummaryrefslogtreecommitdiffstats
path: root/testing/sane
diff options
context:
space:
mode:
authorFabio Riga <rifabio@dpersonam.me>2015-02-27 17:27:16 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2015-03-16 12:04:41 +0000
commita2225b51a19076ad46c069573c500742d771556f (patch)
tree6eefec3be86cf0863f856232915d361bcd464732 /testing/sane
parent0c857465fd1158fd67381b697b4d4a046737bf1d (diff)
testing/sane: new port
http://www.sane-project.org Scanner Access Now Easy
Diffstat (limited to 'testing/sane')
-rw-r--r--testing/sane/10-network.patch42
-rw-r--r--testing/sane/20-segfault-avahi-fix-kodakio.patch98
-rw-r--r--testing/sane/30-musl-header-fixes.patch51
-rw-r--r--testing/sane/APKBUILD81
4 files changed, 272 insertions, 0 deletions
diff --git a/testing/sane/10-network.patch b/testing/sane/10-network.patch
new file mode 100644
index 00000000000..4e422e28d2d
--- /dev/null
+++ b/testing/sane/10-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/testing/sane/20-segfault-avahi-fix-kodakio.patch b/testing/sane/20-segfault-avahi-fix-kodakio.patch
new file mode 100644
index 00000000000..23f9d1ca9e3
--- /dev/null
+++ b/testing/sane/20-segfault-avahi-fix-kodakio.patch
@@ -0,0 +1,98 @@
+From 37523b867d411c2f82d08128246be7e38bc9812c Mon Sep 17 00:00:00 2001
+From: Paul Newall <quandry@ntlworld.com>
+Date: Mon, 14 Oct 2013 22:22:53 +0100
+Subject: [PATCH] Bugfix in kodakaio.c to fix segfault when non kodak scanners
+ return unexpected data via avahi auto discovery
+
+---
+ backend/kodakaio.c | 43 ++++++++++++++++++++++++++++++----------
+ doc/descriptions/kodakaio.desc | 2 +-
+ 3 files changed, 37 insertions(+), 12 deletions(-)
+
+diff --git a/backend/kodakaio.c b/backend/kodakaio.c
+index 8c4583a..b442e50 100644
+--- a/backend/kodakaio.c
++++ b/backend/kodakaio.c
+@@ -127,7 +127,7 @@ for ubuntu 12.10
+
+ #define KODAKAIO_VERSION 02
+ #define KODAKAIO_REVISION 4
+-#define KODAKAIO_BUILD 6
++#define KODAKAIO_BUILD 7
+
+ /* for usb (but also used for net though it's not required). */
+ #define MAX_BLOCK_SIZE 32768
+@@ -2184,6 +2184,7 @@ static void resolve_callback(
+ AvahiLookupResultFlags flags,
+ AVAHI_GCC_UNUSED void* userdata) {
+
++ AvahiStringList *vid_pair_list = NULL, *pid_pair_list = NULL;
+ char *pidkey, *pidvalue;
+ char *vidkey, *vidvalue;
+ size_t valuesize;
+@@ -2204,20 +2205,40 @@ static void resolve_callback(
+ avahi_address_snprint(a, sizeof(a), address);
+
+ /* Output short for Kodak ESP */
+- DBG(min(10,DBG_AUTO), "%s:%u %s ", a,port,host_name);
+- avahi_string_list_get_pair(avahi_string_list_find(txt, "vid"),
+- &vidkey, &vidvalue, &valuesize);
+- DBG(min(10,DBG_AUTO), "%s=%s ", vidkey, vidvalue);
+- avahi_string_list_get_pair(avahi_string_list_find(txt, "pid"),
+- &pidkey, &pidvalue, &valuesize);
+- DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue);
++ DBG(min(10,DBG_AUTO), "%s:%u %s\n", a,port,host_name);
+
++ vid_pair_list = avahi_string_list_find(txt, "vid");
++ if(vid_pair_list != NULL) {
++ avahi_string_list_get_pair(vid_pair_list, &vidkey, &vidvalue, &valuesize);
++ DBG(min(10,DBG_AUTO), "%s=%s ", vidkey, vidvalue);
++ }
++ else DBG(min(10,DBG_AUTO), "failed to find key vid\n");
++
++ pid_pair_list = avahi_string_list_find(txt, "pid");
++ if(pid_pair_list != NULL) {
++ avahi_string_list_get_pair(pid_pair_list, &pidkey, &pidvalue, &valuesize);
++ DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue);
++ }
++ else DBG(min(10,DBG_AUTO), "failed to find key pid\n");
++
++ if(pid_pair_list != NULL && vid_pair_list != NULL) {
+ ProcessAvahiDevice(name, vidvalue, pidvalue, a);
+- avahi_free(vidkey); avahi_free(vidvalue);
+- avahi_free(pidkey); avahi_free(pidvalue);
++ }
++ else DBG(min(10,DBG_AUTO), "didn't call ProcessAvahiDevice\n");
++
++ if(vid_pair_list != NULL) {
++ avahi_free(vidkey);
++ avahi_free(vidvalue);
++ DBG(min(15,DBG_AUTO), "vidkey and vidvalue freed\n");
++ }
++ if(pid_pair_list != NULL) {
++ avahi_free(pidkey);
++ avahi_free(pidvalue);
++ DBG(min(15,DBG_AUTO), "pidkey and pidvalue freed\n");
++ }
+ }
+ }
+-
++ DBG(min(10,DBG_AUTO), "ending resolve_callback\n");
+ avahi_service_resolver_free(r);
+ }
+
+diff --git a/doc/descriptions/kodakaio.desc b/doc/descriptions/kodakaio.desc
+index 7882513..5fb18ed 100644
+--- a/doc/descriptions/kodakaio.desc
++++ b/doc/descriptions/kodakaio.desc
+@@ -1,6 +1,6 @@
+ :backend "kodakaio"
+ :url "http://sourceforge.net/projects/cupsdriverkodak/"
+-:version "2.4.6"
++:version "2.4.7"
+ :manpage "sane-kodakaio"
+ :comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10"
+ :devicetype :scanner
+--
+1.7.10.4
+
diff --git a/testing/sane/30-musl-header-fixes.patch b/testing/sane/30-musl-header-fixes.patch
new file mode 100644
index 00000000000..6e103610438
--- /dev/null
+++ b/testing/sane/30-musl-header-fixes.patch
@@ -0,0 +1,51 @@
+--- ./include/sane/sanei_udp.h.orig
++++ ./include/sane/sanei_udp.h
+@@ -19,6 +19,7 @@
+ #define sanei_udp_h
+
+ #include <sane/sane.h>
++#include <sys/types.h>
+
+ #ifdef HAVE_WINSOCK2_H
+ #include <winsock2.h>
+--- ./backend/hp5400_sanei.c.orig
++++ ./backend/hp5400_sanei.c
+@@ -57,6 +57,7 @@
+ #include "hp5400_debug.h"
+ #include <stdio.h>
+ #include "../include/sane/sanei_usb.h"
++#include <sys/types.h>
+
+ #define CMD_INITBULK1 0x0087 /* send 0x14 */
+ #define CMD_INITBULK2 0x0083 /* send 0x24 */
+--- ./backend/hp5590_low.c.orig
++++ ./backend/hp5590_low.c
+@@ -50,6 +50,7 @@
+ #ifdef HAVE_NETINET_IN_H
+ # include <netinet/in.h>
+ #endif /* HAVE_NETINET_IN_H */
++#include <sys/types.h>
+
+ #include "byteorder.h"
+
+--- ./backend/kvs20xx_cmd.h.orig
++++ ./backend/kvs20xx_cmd.h
+@@ -9,6 +9,8 @@
+ Panasonic KV-S20xx USB-SCSI scanners.
+ */
+
++#include <sys/types.h>
++
+ #define COMMAND_BLOCK 1
+ #define DATA_BLOCK 2
+ #define RESPONSE_BLOCK 3
+--- ./backend/kvs40xx.h.orig
++++ ./backend/kvs40xx.h
+@@ -10,6 +10,7 @@
+
+ #include "../include/sane/config.h"
+ #include <semaphore.h>
++#include <sys/types.h>
+
+ #undef BACKEND_NAME
+ #define BACKEND_NAME kvs40xx
diff --git a/testing/sane/APKBUILD b/testing/sane/APKBUILD
new file mode 100644
index 00000000000..68e6c415ece
--- /dev/null
+++ b/testing/sane/APKBUILD
@@ -0,0 +1,81 @@
+# Contributor: Fabio Riga <rifabio@dpersonam.me>
+# Maintainer:
+pkgname=sane
+pkgver=1.0.24
+pkgrel=0
+pkgdesc="Scanner Access Now Easy"
+url="http://www.sane-project.org/"
+arch="all"
+license="GPL"
+depends=""
+depends_dev="tiff-dev libjpeg-turbo-dev libgphoto2-dev libusb-dev cups-dev
+ v4l-utils-dev avahi-dev bash net-snmp-dev"
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://alioth.debian.org/frs/download.php/file/3958/$pkgname-backends-$pkgver.tar.gz
+ 10-network.patch
+ 20-segfault-avahi-fix-kodakio.patch
+ 30-musl-header-fixes.patch
+ "
+
+_builddir="${srcdir}/${pkgname}-backends-${pkgver}"
+prepare() {
+ local i
+ cd "$_builddir"
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
+}
+
+build() {
+ cd "$_builddir"
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-docdir=/usr/share/doc/sane \
+ --enable-avahi \
+ --enable-pthread \
+ --disable-rpath \
+ --disable-latex \
+ --enable-libusb_1_0 \
+ --disable-locking \
+ || return 1
+
+ make
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="${pkgdir}" install
+ # fix hp officejets
+ echo "#hpaio" >> "${pkgdir}/etc/sane.d/dll.conf"
+ # install udev files
+ install -D -m0644 tools/udev/libsane.rules \
+ "${pkgdir}/usr/lib/udev/rules.d/49-sane.rules"
+ # fix udev rules
+ sed -i 's|NAME="%k", ||g' "${pkgdir}/usr/lib/udev/rules.d/49-sane.rules"
+ # Install the pkg-config file
+ install -D -m644 tools/sane-backends.pc \
+ "${pkgdir}/usr/lib/pkgconfig/sane-backends.pc"
+ # Remove libtool files
+ rm "$pkgdir"/usr/lib/*.la
+ rm "$pkgdir"/usr/lib/sane/*.la
+}
+
+md5sums="1ca68e536cd7c1852322822f5f6ac3a4 sane-backends-1.0.24.tar.gz
+9084841146b6d10b957c60594f707937 10-network.patch
+039524a38af8721f2e97d45e889295ca 20-segfault-avahi-fix-kodakio.patch
+dd5c05ee306a1ca2cd4cbb0149997007 30-musl-header-fixes.patch"
+sha256sums="27c7085a54f1505d8b551e6f1e69d30e1ee57328b18429bb2225dabf4c45462d sane-backends-1.0.24.tar.gz
+8400ed2fb2109447eb9d4e343e2964ece964ba5999b2eb6553762e9c984092c3 10-network.patch
+91e01450f87d52fa82e5e0e112a3ac7f5355f5a133467b8a38d0e1f52e94d25a 20-segfault-avahi-fix-kodakio.patch
+3147e7011d64297f6fa0229a51f5451fee151ccfe09dd2cc05d9feaf2f45fcf2 30-musl-header-fixes.patch"
+sha512sums="1e9f962bb9d27f17067eb662dabfc0a1aa0d06e16bec4bd28868124b468578d82f14f6d2c1f5de63d2cec57ca4584ec12d3b2c2b1de20f1199aece581453ebc5 sane-backends-1.0.24.tar.gz
+9cb595841f59b5105ecc85e4c0ad8781c52caa2354fb823c920ec467e88afbe47f2b3f4a7a3980bef5dbf22983c5786f051a9d10aea97b4bf7c4a05378592029 10-network.patch
+43e91fe2452eca4fbfbd256aae3f44a28674af7210f59b60b34c1149f0cd208318678a810313aabff84f18bb712982e10ae320ef3179b6437e413adda6298fbe 20-segfault-avahi-fix-kodakio.patch
+f7a2ce1826a967fdd1ee8e2bfa2080e79547564dec28012cc8fcc3955730eac8a352d55e1b2478e6092bd968f17745feb81ce8462ccd582a2282ff572c46e351 30-musl-header-fixes.patch"