[neon/snap-packaging/plasma-core-desktop] /: Let go of symlink aliases and symlinks to /dev/null

Kevin Ottens null at kde.org
Wed Feb 26 10:19:46 GMT 2025


Git commit 26c0abbe8606838d27789963df0bc2b1c4c1371e by Kevin Ottens.
Committed on 26/02/2025 at 10:18.
Pushed by ervin into branch 'master'.

Let go of symlink aliases and symlinks to /dev/null

Instead we adjust the service names in the targets directly and we
create empty files instead of symlinks to /dev/null

M  +2    -2    hook-tests/100-no-systemd-service-files.test
M  +9    -9    hooks/200-replace-systemd-service-files.sh
M  +1    -1    hooks/250-workaround-base-snap-services.sh

https://invent.kde.org/neon/snap-packaging/plasma-core-desktop/-/commit/26c0abbe8606838d27789963df0bc2b1c4c1371e

diff --git a/hook-tests/100-no-systemd-service-files.test b/hook-tests/100-no-systemd-service-files.test
index 3033a4a..c2bccf0 100755
--- a/hook-tests/100-no-systemd-service-files.test
+++ b/hook-tests/100-no-systemd-service-files.test
@@ -10,12 +10,12 @@ if [ ! -d $SYSTEMD_USER_DIR ]; then
 fi
 
 # We allow just a couple we know to be innocuous because they just make a qdbus or dbus-send call
-SERVICE_FILES=`find $SYSTEMD_USER_DIR -maxdepth 1 -type f -name "*.service" | \
+SERVICE_FILES=`find $SYSTEMD_USER_DIR -maxdepth 1 -type f,l -size +0c -name "*.service" | \
     grep -v -E "(plasma-ksplash-ready|plasma-kcminit-phase1|plasma-restoresession)" | \
     cat`
 
 if [ -n "$SERVICE_FILES" ]; then
-    echo "Found service regular files which need to be removed:"
+    echo "Found non-empty service files which need to be removed:"
     echo $SERVICE_FILES
     exit 1
 fi
diff --git a/hooks/200-replace-systemd-service-files.sh b/hooks/200-replace-systemd-service-files.sh
index 4efc183..c7bdf08 100755
--- a/hooks/200-replace-systemd-service-files.sh
+++ b/hooks/200-replace-systemd-service-files.sh
@@ -31,9 +31,9 @@ done
 
 # Services launched at session startup
 rm "usr/lib/systemd/user/plasma-kwin_wayland.service"
-ln -s "/etc/systemd/user/snap.plasma-desktop-session.plasma-kwin-wayland.service" "usr/lib/systemd/user/plasma-kwin_wayland.service"
-mkdir "usr/lib/systemd/user/plasma-kwin_wayland.service.d"
-cat >"usr/lib/systemd/user/plasma-kwin_wayland.service.d/override.conf"<<EOF
+sed -i -E -e "s,plasma-kwin_wayland.service,snap.plasma-desktop-session.plasma-kwin-wayland.service," usr/lib/systemd/user/*.target
+mkdir "usr/lib/systemd/user/snap.plasma-desktop-session.plasma-kwin-wayland.service.d"
+cat >"usr/lib/systemd/user/snap.plasma-desktop-session.plasma-kwin-wayland.service.d/override.conf"<<EOF
 [Unit]
 PartOf=graphical-session.target
 EOF
@@ -53,9 +53,9 @@ snapped_services=(
 )
 for service in "${snapped_services[@]}"; do
     rm "usr/lib/systemd/user/$service.service"
-    ln -s "/etc/systemd/user/snap.plasma-desktop-session.$service.service" "usr/lib/systemd/user/$service.service"
-    mkdir "usr/lib/systemd/user/$service.service.d"
-    cat >"usr/lib/systemd/user/$service.service.d/override.conf"<<EOF
+    sed -i -E -e "s,$service.service,snap.plasma-desktop-session.$service.service," usr/lib/systemd/user/*.target
+    mkdir "usr/lib/systemd/user/snap.plasma-desktop-session.$service.service.d"
+    cat >"usr/lib/systemd/user/snap.plasma-desktop-session.$service.service.d/override.conf"<<EOF
 [Unit]
 PartOf=graphical-session.target
 EOF
@@ -66,9 +66,9 @@ content_provided_services=(
     plasma-kded6
 )
 for service in "${content_provided_services[@]}"; do
-    ln -s "/etc/systemd/user/snap.plasma-desktop-session.$service.service" "usr/lib/systemd/user/$service.service"
-    mkdir "usr/lib/systemd/user/$service.service.d"
-    cat >"usr/lib/systemd/user/$service.service.d/override.conf"<<EOF
+    sed -i -E -e "s,$service.service,snap.plasma-desktop-session.$service.service," usr/lib/systemd/user/*.target
+    mkdir "usr/lib/systemd/user/snap.plasma-desktop-session.$service.service.d"
+    cat >"usr/lib/systemd/user/snap.plasma-desktop-session.$service.service.d/override.conf"<<EOF
 [Unit]
 PartOf=graphical-session.target
 EOF
diff --git a/hooks/250-workaround-base-snap-services.sh b/hooks/250-workaround-base-snap-services.sh
index 5142f1a..d80f9cc 100755
--- a/hooks/250-workaround-base-snap-services.sh
+++ b/hooks/250-workaround-base-snap-services.sh
@@ -24,7 +24,7 @@ disabled_units=(
     snap.ubuntu-desktop-session.xdg-desktop-portal-gnome.service
 )
 for unit in "${disabled_units[@]}"; do
-    ln -sf /dev/null "usr/lib/systemd/user/$unit"
+    touch "usr/lib/systemd/user/$unit"
 done
 
 # Make sure we don't pollute xdg-desktop-portal environment


More information about the Neon-commits mailing list