debian: Generate postinst devices list automatically at gbp import phase

Alternatively provide a script to keep the post-inst script updated
This commit is contained in:
Marco Trevisan (Treviño)
2021-01-21 19:06:56 +01:00
parent b97f10d63d
commit 4c4b444f21
6 changed files with 67 additions and 18 deletions
+7 -16
View File
@@ -1,19 +1,10 @@
The libfprint0 postinst script calls udevadmin trigger for all the supported The libfprint-2-2 postinst script calls udevadmin trigger for all the supported
USB readers. The list of readers used in that file is generated by calling the USB readers. The list of readers used in that file is generated using the gbp
following awk script: import hook when `gbp import-orig` (via --uscan or with a tarball) is used.
/plugdev/ { Alternatively it can be called manually by using:
printf ("\tudevadm trigger --action=add " )
for (i=1;i<=NF; i++){ GBP_SOURCES_DIR=. debian/update-udev-triggers.sh
if (match($i,/idVendor/)>0) {
match($i, /"[^"]*"/); printf ("--attr-match=idVendor=%s ",substr($i,RSTART+1,RLENGTH-2))
}
if (match($i,/idProduct/)>0) {
match($i, /"[^"]*"/); printf ("--attr-match=idProduct=%s",substr($i,RSTART+1,RLENGTH-2))
}
};
printf("\n")
}
When preparing a new upstream release, this script should be called against the When preparing a new upstream release, this script should be called against the
udev .rules file generated during the build of the package upstream provided .hwdb file.
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
set -e
dch -v"$GBP_DEBIAN_VERSION" "New upstream release"
git add debian/changelog
debcommit
debian/update-udev-triggers.sh
+1 -1
View File
@@ -10,7 +10,7 @@ sign-tags = True
multimaint-merge = True multimaint-merge = True
[import-orig] [import-orig]
postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit postimport = debian/gbp-post-import-hook.sh
[pq] [pq]
patch-numbers = False patch-numbers = False
+3 -1
View File
@@ -5,10 +5,12 @@ set -e
#DEBHELPER# #DEBHELPER#
if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1; then if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1; then
# apply udev rules at package installation, see # apply hwdb rules at package installation, see
# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683863#27> # <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683863#27>
# NOTA BENE: after the DEBHELPER section since dh_installudev # NOTA BENE: after the DEBHELPER section since dh_installudev
# adds stuff there # adds stuff there
# The devices ID list is auto-generated using the gbp postimport hook
# see debian/README.sources for more details.
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2016 udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2016
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2020 udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2020
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0010 udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0010
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
set -e
#DEBHELPER#
if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1; then
# apply hwdb rules at package installation, see
# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683863#27>
# NOTA BENE: after the DEBHELPER section since dh_installudev
# adds stuff there
# The devices ID list is auto-generated using the gbp postimport hook
# see debian/README.sources for more details.
${UDEVADM_TRIGGERS}
fi
exit 0
+31
View File
@@ -0,0 +1,31 @@
#!/bin/bash
set -e
srcdir="${GBP_SOURCES_DIR:-.}"
debpath="$(dirname "$0")"
autosuspend_file="$srcdir/data/autosuspend.hwdb"
commands_lines=()
while IFS= read -r line; do
if [[ $line =~ ^usb:v([A-Fa-f0-9]{4})p([A-Fa-f0-9]{4}) ]]; then
vendor="$(echo "${BASH_REMATCH[1]}" | tr '[:upper:]' '[:lower:]')"
product="$(echo "${BASH_REMATCH[2]}" | tr '[:upper:]' '[:lower:]')"
commands_lines+=("\tudevadm trigger --action=add --attr-match=idVendor=$vendor --attr-match=idProduct=$product")
fi
done < "$autosuspend_file"
export UDEVADM_TRIGGERS=$( IFS=$'\n'; echo -e "${commands_lines[*]}" )
for i in $debpath/libfprint-*.post*.in; do
out="${i%.in}"
envsubst < "$i" > "$out"
if [ -n "$GBP_BRANCH" ]; then
if ! git diff-index --quiet HEAD -- "$out"; then
git add "$out"
dch "${out#$srcdir}: Devices triggers updated"
git add debian/changelog
debcommit
fi
fi
done