148 lines
3.8 KiB
Bash
148 lines
3.8 KiB
Bash
|
|
# The download URL/ filename does not change with version update. Need to check filenames inside downloaded ZIP file, or front webpage, for version.
|
||
|
|
|
||
|
|
_upstreamlistingurl='https://www.kyoceradocumentsolutions.eu/en/support/downloads.name-L2V1L2VuL21mcC9FQ09TWVNNNDEzMklETg==.html'
|
||
|
|
_upstreamsourcedownloadpath='https://www.kyoceradocumentsolutions.eu/content/dam/download-center-cf/eu/drivers/all'
|
||
|
|
_upstreamsourcefilename='SANE_Driver_zip.download.zip'
|
||
|
|
_get_pkgver() {
|
||
|
|
local _ver='' _chunk
|
||
|
|
|
||
|
|
while IFS= read -r -d '' _chunk || [[ -n $_chunk ]]; do
|
||
|
|
if [[ $_chunk =~ SANE[[:space:]]Driver[[:space:]]\(([0-9.]+)\) ]]; then
|
||
|
|
_ver="${BASH_REMATCH[1]}"
|
||
|
|
fi
|
||
|
|
done < <(curl -fsSL "${_upstreamlistingurl}")
|
||
|
|
|
||
|
|
if [[ -z $_ver ]]; then
|
||
|
|
printf '%s\n' 'Failed to determine upstream version.' >&2
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
printf '%s\n' "$_ver"
|
||
|
|
}
|
||
|
|
|
||
|
|
pkgname=kyocera-sane
|
||
|
|
pkgver="$(_get_pkgver)"
|
||
|
|
pkgrel=2
|
||
|
|
pkgdesc='Kyocera sane scanner support package for many Kyocera printers.'
|
||
|
|
arch=(
|
||
|
|
'i386'
|
||
|
|
'i486'
|
||
|
|
'i586'
|
||
|
|
'i686'
|
||
|
|
'x86_64'
|
||
|
|
)
|
||
|
|
url='https://www.kyocera.com/'
|
||
|
|
license=('LicenseRef-proprietary')
|
||
|
|
|
||
|
|
install="${pkgname}.install"
|
||
|
|
|
||
|
|
options=('!debug')
|
||
|
|
|
||
|
|
source=(
|
||
|
|
"${pkgname}-${pkgver}_SANE-Driver.zip::${_upstreamsourcedownloadpath}/${_upstreamsourcefilename}"
|
||
|
|
'README.txt'
|
||
|
|
)
|
||
|
|
sha256sums=(
|
||
|
|
'3076b7ae5e48564568ab7c660da3c77d6059b3fe96056f4df2a38544b579f8ab'
|
||
|
|
'945f922065e8278d2ec6e0c1e8ce6851834359cd02ff85534fa3d7baccec6ffe'
|
||
|
|
)
|
||
|
|
|
||
|
|
prepare() {
|
||
|
|
cd "${srcdir}"
|
||
|
|
install -d build
|
||
|
|
|
||
|
|
local _debarch
|
||
|
|
|
||
|
|
case "${CARCH}" in
|
||
|
|
i386 | i486 | i586 | i686)
|
||
|
|
_debarch='i386'
|
||
|
|
;;
|
||
|
|
x86_64)
|
||
|
|
_debarch='amd64'
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
printf 'Unsupported architecture: %s\n' "${CARCH}" >&2
|
||
|
|
return 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
bsdtar -xf "${pkgname}_${pkgver}_${_debarch}.deb"
|
||
|
|
bsdtar -xf "${srcdir}/data.tar.xz" -C "${srcdir}/build"
|
||
|
|
}
|
||
|
|
|
||
|
|
build() {
|
||
|
|
cd "${srcdir}/build"
|
||
|
|
|
||
|
|
# From .deb postinst
|
||
|
|
install -dvm755 "etc/sane.d/dll.d"
|
||
|
|
printf '%s\n' \
|
||
|
|
'kyocera' \
|
||
|
|
'kyocera_gdi_a3' \
|
||
|
|
'kyocera_wc3' \
|
||
|
|
'kyocera_wc3_usb' \
|
||
|
|
>"etc/sane.d/dll.d/kyocera.conf"
|
||
|
|
|
||
|
|
chmod 644 "etc/sane.d"/*.conf
|
||
|
|
chmod 644 "etc/sane.d/dll.d"/*.conf
|
||
|
|
|
||
|
|
# Prevent usblp from claiming the USB printer interface.
|
||
|
|
install -dvm755 "usr/lib/modprobe.d"
|
||
|
|
printf '%s\n' \
|
||
|
|
'# Kyocera SANE backend requires direct libusb access.' \
|
||
|
|
'blacklist usblp' \
|
||
|
|
>"usr/lib/modprobe.d/${pkgname}.conf"
|
||
|
|
chmod 644 "usr/lib/modprobe.d/${pkgname}.conf"
|
||
|
|
|
||
|
|
# Grant the active user access to Kyocera FS-1020MFP.
|
||
|
|
install -dvm755 "usr/lib/udev/rules.d"
|
||
|
|
printf '%s\n' \
|
||
|
|
'ACTION!="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", ATTRS{idProduct}=="0495", MODE="0660", TAG+="uaccess"' \
|
||
|
|
>"usr/lib/udev/rules.d/71-${pkgname}.rules"
|
||
|
|
chmod 644 "usr/lib/udev/rules.d/71-${pkgname}.rules"
|
||
|
|
|
||
|
|
# The proprietary Kyocera backend creates temporary files directly
|
||
|
|
# in this hardcoded directory (e.g. scannerdata.bin, raster_1.bmp).
|
||
|
|
chmod 1777 "usr/local/kyocera/scanner"
|
||
|
|
|
||
|
|
# Move the vendor UDEV rule to documentation because it grants
|
||
|
|
# overly permissive permissions (0666) to all USB devices.
|
||
|
|
mv -v \
|
||
|
|
"etc/udev/rules.d/40-scanner-permissions.rules" \
|
||
|
|
"usr/share/doc/${pkgname}/"
|
||
|
|
chmod 644 \
|
||
|
|
"usr/share/doc/${pkgname}/40-scanner-permissions.rules"
|
||
|
|
rmdir -v "etc/udev/rules.d"
|
||
|
|
|
||
|
|
# Move the license into place.
|
||
|
|
install -Dvm644 \
|
||
|
|
"usr/share/doc/${pkgname}/copyright" \
|
||
|
|
"usr/share/licenses/${pkgname}/COPYRIGHT"
|
||
|
|
rm "usr/share/doc/${pkgname}/copyright"
|
||
|
|
|
||
|
|
# Clean unnecessary files.
|
||
|
|
case "${CARCH}" in
|
||
|
|
i386 | i486 | i586 | i686)
|
||
|
|
rm -r "usr/lib/i386-linux-gnu"
|
||
|
|
;;
|
||
|
|
x86_64)
|
||
|
|
rm -r "usr/lib/x86_64-linux-gnu"
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
printf 'Unsupported architecture: %s\n' "${CARCH}" >&2
|
||
|
|
return 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
}
|
||
|
|
|
||
|
|
package() {
|
||
|
|
cd "${srcdir}/build"
|
||
|
|
|
||
|
|
# Move files into place.
|
||
|
|
cp -rv * "${pkgdir}"/
|
||
|
|
|
||
|
|
# Install documentation.
|
||
|
|
install -Dvm644 \
|
||
|
|
"${srcdir}/README.txt" \
|
||
|
|
"${pkgdir}/usr/share/doc/${pkgname}/README.txt"
|
||
|
|
}
|