[Christian Meyer]
> appstreamcli has differnt outputs depending on LANG, and while you look
> for lines with the word '/Package:/' with german LANG the same line
> starts with the word "Paket".

Aha, I did not know.  Good catch.

> I still was not able to figure out, why isenkramcli 'wants' to install
> raspi-firmware and what happens with a second call of isenkram-
> autoinstall-firmware, after raspi-firmware is installed successfully.

As far as I can tell, isenkram-autoinstall-firmware want to install
raspi-firmware because the raspi-firmware package contain a firmware
file one of the drivers loaded on the Lenovo machine want.  See
<URL: https://bugs.debian.org/999485 > for a request to move the file
into a non-rpi related package.

Here is a new and adjusted patch, making sure appstreamcli uses the C
locale and trying to handle the wildcard firmware entries at least one
of your machines driver kernel module mention.  I am not sure if this
last change is a useful approach, but thought it best to give it a go.

diff --git a/isenkram-autoinstall-firmware b/isenkram-autoinstall-firmware
index b3152e7..5d55ff9 100755
--- a/isenkram-autoinstall-firmware
+++ b/isenkram-autoinstall-firmware
@@ -54,13 +54,13 @@ EOF
 
 appstreamlookup() {
     fwfile="$1"
-    appstreamcli what-provides firmware:runtime "$fwfile" | \
+    LC_ALL=C appstreamcli what-provides firmware:runtime "$fwfile" | \
        awk '/Package:/ { print $2}'
 }
 
 # Find firmware files requested by loaded kernel drivers.
-for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo 
$module 2>/dev/null |awk '/^firmware:/ {print $2}'; done|sort -u); do
-    if [ ! -e /lib/firmware/$fwfile ] ; then
+for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo 
$module 2>/dev/null |awk '/^firmware:/ {print $2}'; done| LC_ALL=C sort -u); do
+    if [ ! -e "/lib/firmware/$fwfile" ] ; then
        fwfiles="${fwfiles:+$fwfiles }$fwfile"
     fi
 done
@@ -70,7 +70,7 @@ done
 if dmesg >/dev/null 2>&1 ; then
     for fwfile in $(dmesg | sed -rn 's/^(\[[^]]*\] )?([^ ]+) [^ ]+: firmware: 
failed to load ([^ ]+) .*/\3/p'); do
        loginfo "looking for firmware file $fwfile requested by kernel"
-       if [ ! -e /lib/firmware/$fwfile ] ; then
+       if [ ! -e "/lib/firmware/$fwfile" ] ; then
             fwfiles="${fwfiles:+$fwfiles }$fwfile"
        fi
     done
@@ -145,7 +145,7 @@ done
 # Many different files can be required for a single hardware device,
 # plus several devices might require files from the same package, so
 # optimize!
-binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | sort -u | xargs)
+binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | LC_ALL=C sort -u | xargs)
 
 loginfo "determining whether enabling other components is required"
 binpkgs="${binpkgs:+$binpkgs }$(

-- 
Happy hacking
Petter Reinholdtsen

Reply via email to