PKG_NAME:=hplip
PKG_VERSION:=3.19.12
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/hplip
--disable-cups-drv-install \
--enable-lite-build
+define Build/Install
+ mkdir -p $(PKG_INSTALL_DIR)/usr/share/sane
+ sed -n -e '/key="usb.product_id"/{s/.*int_outof="0x//;s/;0x/\n/g;s/".*//;p}' \
+ $(PKG_BUILD_DIR)/data/rules/20-hplip-devices.fdi | sort -u > \
+ $(PKG_INSTALL_DIR)/usr/share/sane/03f0-hplip.usbid
+endef
+
define Package/hplip-common/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/.libs/libhpip.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/share/hplip/data/models/
$(CP) $(PKG_BUILD_DIR)/data/models/models.dat $(1)/usr/share/hplip/data/models/
-
- $(INSTALL_DIR) $(1)/etc/hotplug.d/usb/
- $(INSTALL_BIN) ./files/20-hplip $(1)/etc/hotplug.d/usb/
endef
define Package/hplip-sane/install
$(INSTALL_DIR) $(1)/etc/sane.d/dll.d/
$(INSTALL_DATA) ./files/hplib.conf $(1)/etc/sane.d/dll.d/hplib
+
+ $(INSTALL_DIR) $(1)/usr/share/sane
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/sane/03f0-hplip.usbid \
+ $(1)/usr/share/sane/03f0-hplip.usbid
endef
define Package/hplip-common/conffiles
PKG_NAME:=sane-backends
PKG_VERSION:=1.0.28
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://gitlab.com/sane-project/backends/uploads/9e718daff347826f4cfe21126c8d5091/
PKG_HASH:=31260f3f72d82ac1661c62c5a4468410b89fb2b4a811dabbfcc0350c1346de03
CATEGORY:=Utilities
DEPENDS:=+libsane
TITLE+= (network daemon)
+ USERID:=saned:scanner
endef
define Package/sane-daemon/description
This package contains the SANE daemon.
endef
+# Run hotplug to grant access to existing scanners
+define Package/sane-daemon/postinst
+#!/bin/sh
+udevtrigger
+endef
+
define Package/libsane
$(call Package/sane-backends/Default)
SECTION:=libs
$(Build/Configure/Default)
endef
+define Build/Install
+ $(call Build/Install/Default)
+ mkdir -p $(PKG_INSTALL_DIR)/usr/share/sane
+ $(foreach file, $(filter-out %/unsupported.desc ,$(wildcard $(PKG_BUILD_DIR)/doc/descriptions/*.desc)),
+ sed -rn -e '/^:usbid[[:blank:]]+"?0x(....)"?[[:blank:]]+"?0x(....)"?.*/{s//\1 \2/;p}' $(file) | \
+ sort -u > $(PKG_INSTALL_DIR)/usr/share/sane/$(basename $(notdir $(file))).usbid; \
+ awk '{ print $$$$2 > "$(PKG_INSTALL_DIR)/usr/share/sane/"$$$$1"-$(basename $(notdir $(file))).usbid" }' \
+ $(PKG_INSTALL_DIR)/usr/share/sane/$(basename $(notdir $(file))).usbid ;
+ )
+endef
+
define Package/libsane/install
$(INSTALL_DIR) $(1)/usr/lib/sane/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsane.so.* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/sane/libsane-dll.so.* $(1)/usr/lib/sane/
$(INSTALL_DIR) $(1)/etc/sane.d/dll.d
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/sane.d/dll.conf $(1)/etc/sane.d/
- chmod 0755 $(1)/etc/sane.d/dll.conf
+ chmod 0644 $(1)/etc/sane.d/dll.conf
endef
define Package/libsane/conffiles
define Package/sane-daemon/install
$(INSTALL_DIR) $(1)/etc/sane.d
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/sane.d/saned.conf $(1)/etc/sane.d/
- chmod 0755 $(1)/etc/sane.d/saned.conf
+ chmod 0644 $(1)/etc/sane.d/saned.conf
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/saned.sbin $(1)/usr/sbin/saned
$(INSTALL_DIR) $(1)/usr/lib/sane/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/saned $(1)/usr/lib/sane/saned
$(INSTALL_DIR) $(1)/etc/xinetd.d
$(INSTALL_CONF) ./files/saned.xinetd $(1)/etc/xinetd.d/sane-port
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/usb/
+ $(INSTALL_BIN) ./files/saned.hotplug $(1)/etc/hotplug.d/usb/20-saned
endef
define Package/sane-daemon/conffiles
define Package/sane-$(1)/install
if [ -f "$(PKG_INSTALL_DIR)/etc/sane.d/$(1).conf" ]; then \
- $(INSTALL_DIR) $$(1)/etc/sane.d ; \
- $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/sane.d/$(1).conf $$(1)/etc/sane.d/; \
- chmod 0755 $$(1)/etc/sane.d/$(1).conf ; \
- fi
- $(INSTALL_DIR) $$(1)/usr/lib/sane
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/sane/libsane-$(1).so.* $$(1)/usr/lib/sane/
+ $(INSTALL_DIR) $$(1)/etc/sane.d ; \
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/sane.d/$(1).conf $$(1)/etc/sane.d/ ; \
+ chmod 0644 $$(1)/etc/sane.d/$(1).conf ; \
+ fi ; \
+ $(INSTALL_DIR) $$(1)/usr/lib/sane ; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/sane/libsane-$(1).so.* $$(1)/usr/lib/sane/ ; \
if [ -d "$(PKG_INSTALL_DIR)/usr/share/sane/$(1)" ]; then \
$(INSTALL_DIR) $$(1)/usr/share/sane/ ; \
$(CP) -a $(PKG_INSTALL_DIR)/usr/share/sane/$(1) $$(1)/usr/share/sane/ ; \
+ fi ; \
+ if [ -s "$(PKG_INSTALL_DIR)/usr/share/sane/$(1).usbid" ]; then \
+ $(INSTALL_DIR) $$(1)/usr/share/sane/ ; \
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/sane/????-$(1).usbid $$(1)/usr/share/sane/ ; \
fi
endef
--- /dev/null
+#!/bin/sh
+
+[ "$ACTION" = "add" ] || exit 0
+[ "$DEVTYPE" = "usb_device" ] || exit 0
+
+SANE_GROUP=scanner
+grep -q -E "^$SANE_GROUP:" /etc/group || exit 0
+
+# Filter SANE known devices
+vendor_product="${PRODUCT%/*}"
+vendorid="$(printf '%04x' "0x0${vendor_product%/*}")"
+productid="$(printf '%04x' "0x0${vendor_product#*/}")"
+grep -s -x -F -q "$productid" "/usr/share/sane/$vendorid"-*.usbid || exit 0
+
+grant() {
+ logger -t "hotplug(usb/20-saned)" "Granting $1 to '$2' for group '$SANE_GROUP'"
+ chgrp "$SANE_GROUP" "$2"
+ chmod "$1" "$2"
+}
+
+# Needed by script /usr/bin/saned to rebind USB devices back to usblp after use
+usblp_bind="/sys/bus/usb/drivers/usblp/bind"
+if [ -e "$usblp_bind" ]; then
+ grant g+w "$usblp_bind"
+fi
+
+grant g+rw "/dev/$DEVNAME"