From ec117a35a115391bff1b4ea5383765ab59c6df67 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Tue, 6 Oct 2026 08:50:23 -0400 Subject: [PATCH] fix(install): stop libblockdev matching the desktop-environment check (#780) * fix(install): stop libblockdev matching the desktop-environment check dpkg -l | grep -E '^ii.*kde' searched the description column too, so unrelated packages (libblockdev-*) set DESKTOP_DETECTED on Raspberry Pi OS Lite. Match on the installed package name only, anchored. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01VZNWFWprcFYGfuf1JAyrBJ * docs(install): correct why the desktop check matched libblockdev The unanchored .*kde matched the package name mid-word ("bloc-kde-v"), not only description text. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VZNWFWprcFYGfuf1JAyrBJ --------- Co-authored-by: Claude --- first_time_install.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/first_time_install.sh b/first_time_install.sh index 65cd66fc..ea494c12 100755 --- a/first_time_install.sh +++ b/first_time_install.sh @@ -91,7 +91,11 @@ if [ -r "$LM_OS_RELEASE_FILE" ]; then DESKTOP_DETECTED=0 # grep without -q: -q exits at the first match, dpkg then dies of SIGPIPE, # and pipefail turns a found desktop into "not found". - if dpkg -l | grep -E "^ii.*raspberrypi-ui-mods|^ii.*lxde|^ii.*xfce|^ii.*gnome|^ii.*kde" >/dev/null; then + # Match installed package names from their start: the unanchored ".*kde" + # matched mid-word (libblockdev-* = "bloc-kde-v") on Lite, and `dpkg -l` + # lines also carry descriptions that could match. + if dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' 2>/dev/null \ + | grep -E "^ii +(raspberrypi-ui-mods|lxde|xfce|gnome|kde)" >/dev/null; then DESKTOP_DETECTED=1 fi if systemctl list-units --type=service --state=running 2>/dev/null | grep -qE "lightdm|gdm3|sddm|lxdm"; then