user/sane: add no avahi thread patch

This commit is contained in:
Antoine Martin 2023-07-07 21:28:53 -04:00
parent e1aec2ea8c
commit 75e24ea11a
8 changed files with 267 additions and 0 deletions

162
user/sane/APKBUILD Normal file
View file

@ -0,0 +1,162 @@
# Contributor: Fabio Riga <rifabio@dpersonam.me>
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: Valery Kartel <valery.kartel@gmail.com>
pkgname=sane
_pkgname=sane-backends
pkgver=1.1.1
pkgrel=3
pkgdesc="Scanner Access Now Easy - universal scanner interface"
url="http://www.sane-project.org/"
arch="!armv7 all"
license="GPL-2.0-or-later GPL-2.0-or-later-with-sane-exception Public-Domain"
makedepends="diffutils file libtool libusb-dev v4l-utils-dev net-snmp-dev
avahi-dev curl-dev libpng-dev libjpeg-turbo-dev tiff-dev libgphoto2-dev
poppler-dev linux-headers libieee1284-dev libxml2-dev"
install="$pkgname-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 escl 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 ricoh2
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)
options="$options !check"
_backends="$_backends qcam canon_lide70"
;;
x86_64)
_backends="$_backends qcam canon_lide70"
;;
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 $pkgname-saned
$pkgname-udev::noarch $_pkgname::noarch"
source="https://gitlab.com/sane-project/backends/uploads/7d30fab4e115029d91027b6a58d64b43/sane-backends-$pkgver.tar.gz
$pkgname-fix-tests.patch::https://gitlab.com/sane-project/backends/-/commit/edfc90450ee06149537fadb3095ba4b215c5c4fa.patch
saned.initd
include.patch
pidfile.patch
check.patch
sane-backends-no-avahi-thread.patch
"
builddir="$srcdir"/$_pkgname-$pkgver
# secfixes:
# 1.0.30-r0:
# - CVE-2020-12861
# - CVE-2020-12862
# - CVE-2020-12863
# - CVE-2020-12864
# - CVE-2020-12865
# - CVE-2020-12866
# - CVE-2020-12867
build() {
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--with-docdir=/usr/share/doc/$pkgname \
--with-usb \
--enable-avahi \
--disable-rpath \
--disable-locking
make
}
check() {
make check
}
package() {
make DESTDIR="$pkgdir" install
echo -n "" > "$pkgdir"/etc/$pkgname.d/dll.conf
install -Dm644 backend/dll.aliases "$pkgdir"/etc/$pkgname.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() {
local name=${subpkgname#$pkgname-}
pkgdesc="$pkgdesc (network scanner server)"
mkdir -p "$subpkgdir"/etc/$pkgname.d "$subpkgdir"/usr
mv "$pkgdir"/etc/$pkgname.d/$name.conf "$subpkgdir"/etc/$pkgname.d
mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/
install -Dm755 "$srcdir"/$name.initd "$subpkgdir"/etc/init.d/$name
}
utils() {
pkgdesc="$pkgdesc (utilities)"
mkdir -p "$subpkgdir"/usr
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
rm -fr "$pkgdir"/usr/share
}
udev() {
pkgdesc="$pkgdesc (udev rules)"
install_if="$pkgname=$pkgver-r$pkgrel udev"
install -Dm644 "$builddir"/tools/udev/lib$pkgname.rules \
"$subpkgdir"/usr/lib/udev/rules.d/49-$pkgname.rules
sed -i 's|NAME="%k", ||g' "$subpkgdir"/usr/lib/udev/rules.d/49-$pkgname.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/$pkgname/lib$pkgname-$name.* \
"$subpkgdir"/usr/lib/$pkgname
echo "$name" > "$subpkgdir"/etc/$pkgname.d/dll.d/$name
if [ -f "$pkgdir"/etc/$pkgname.d/$name.conf ]; then
mv "$pkgdir"/etc/$pkgname.d/$name.conf \
"$subpkgdir"/etc/$pkgname.d
fi
if [ -f "$pkgdir"/usr/bin/$name ]; then
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/$name "$subpkgdir"/usr/bin
fi
}
sha512sums="
25bd9f90d550cfe6a6d01c48e83716a53f4b0e3a294287e455ecb5e5b80c8fe1699f45c6c87f694475cceb85745c70597e18a7b1094669d5091c5fb183dfe94d sane-backends-1.1.1.tar.gz
f4187409a85dbdb95213948fcc1bb34cf319a3a5ae34093d1e9e7983dfc89336c75132713e6f3113ad7ef2b0ed78bdc0c6e031796fca7004787776f46c742ec6 sane-fix-tests.patch
0a06eaa28b345202f2bdf8361e06f843bb7a010b7d8f80132f742672c94249c43f64031cefa161e415e2e2ab3a53b23070fb63854283f9e040f5ff79394ac7d1 saned.initd
1779ff8beb1ba5f9238c25d819a7f0045f7e257c19b511315feb85650e445ca86450a9e1d7ff8650499d3dae808589a6c2e358d5f3f39a3f40ce4999179b86d6 include.patch
09505943f9441854a6c333f19e2535b4a646a8cc060fe82c6261e7d29c72773ebe98d43a91acc951f4336a3c8b4c84ab7c7b0763426136b4b59d9546bc2fa8c0 pidfile.patch
cfa327209efd9a2a2db7cbcf571852959823aaa19b43d5f6415834cd5ae38b6324ecae16779f6f896aa0d7ac890fe23244100b7d6a68e5e9d52cd38ec82bfac8 check.patch
6e6b6336203ee6d1ac96ed2d742e181fb65e8d93386b76d70b6359afbcce98343d89ec8b2b611261f79901779a2999f9262c3f85898bd15c74b00348e0cd3cd7 sane-backends-no-avahi-thread.patch
"

11
user/sane/check.patch Normal file
View file

@ -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

11
user/sane/include.patch Normal file
View file

@ -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

11
user/sane/pidfile.patch Normal file
View file

@ -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

View file

@ -0,0 +1,48 @@
diff --git a/backend/net.c.orig b/backend/net.c
index 7c4aae9..0adfbc2 100644
--- a/backend/net.c.orig
+++ b/backend/net.c
@@ -1043,12 +1043,12 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
continue;
}
#if WITH_AVAHI
- avahi_threaded_poll_lock (avahi_thread);
+ if(avahi_thread) avahi_threaded_poll_lock (avahi_thread);
#endif /* WITH_AVAHI */
DBG (2, "sane_init: trying to add %s\n", device_name);
add_device (device_name, 0);
#if WITH_AVAHI
- avahi_threaded_poll_unlock (avahi_thread);
+ if(avahi_thread) avahi_threaded_poll_unlock (avahi_thread);
#endif /* WITH_AVAHI */
}
@@ -1094,12 +1094,12 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
continue;
#endif /* ENABLE_IPV6 */
#if WITH_AVAHI
- avahi_threaded_poll_lock (avahi_thread);
+ if(avahi_thread) avahi_threaded_poll_lock (avahi_thread);
#endif /* WITH_AVAHI */
DBG (2, "sane_init: trying to add %s\n", host);
add_device (host, 0);
#if WITH_AVAHI
- avahi_threaded_poll_unlock (avahi_thread);
+ if(avahi_thread) avahi_threaded_poll_unlock (avahi_thread);
#endif /* WITH_AVAHI */
}
free (copy);
@@ -1517,11 +1517,11 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
"sane_open: device %s not found, trying to register it anyway\n",
nd_name);
#if WITH_AVAHI
- avahi_threaded_poll_lock (avahi_thread);
+ if(avahi_thread) avahi_threaded_poll_lock (avahi_thread);
#endif /* WITH_AVAHI */
status = add_device (nd_name, &dev);
#if WITH_AVAHI
- avahi_threaded_poll_unlock (avahi_thread);
+ if(avahi_thread) avahi_threaded_poll_unlock (avahi_thread);
#endif /* WITH_AVAHI */
if (status != SANE_STATUS_GOOD)
{

View file

@ -0,0 +1,5 @@
#!/bin/sh
adduser -SDH -h /run/saned -s /sbin/nologin -G scanner -g saned saned 2>/dev/null
exit 0

View file

@ -0,0 +1,5 @@
#!/bin/sh
addgroup -S scanner 2>/dev/null
exit 0

14
user/sane/saned.initd Normal file
View file

@ -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%/*}
}