]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
plymouth-populate-initrd: Handle xkb and fontconfig not being installed
authorRay Strode <rstrode@redhat.com>
Mon, 25 Dec 2023 19:42:53 +0000 (14:42 -0500)
committerRay Strode <rstrode@redhat.com>
Mon, 25 Dec 2023 19:42:53 +0000 (14:42 -0500)
Some minimal installs won't have fontconfig or xkb. In those cases,
the script should continue to work even if the initramfs will be
less featureful.

This commit fixes that.

scripts/plymouth-populate-initrd.in

index 8ccac22c637dd4f4228e24e798b537323587ee72..a7919dedce47e755313393e00c26141c5648fd54 100755 (executable)
@@ -475,49 +475,51 @@ inst ${PLYMOUTH_POLICYDIR}/plymouthd.defaults $INITRDDIR
 inst ${PLYMOUTH_CONFDIR}/plymouthd.conf $INITRDDIR
 
 # Install xkb info
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/"
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/compat/"
-
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/keycodes/"
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/rules/"
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/symbols/"
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/types/"
-mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/locale/"
-inst ${X11_DIRECTORY}/xkb/compat/accessx $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/basic $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/caps $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/complete $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/iso9995 $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/ledcaps $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/lednum $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/ledscroll $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/level5 $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/misc $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/mousekeys $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/compat/xfree86 $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/keycodes/aliases $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/keycodes/evdev $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/rules/evdev $INITRDDIR
-find ${X11_DIRECTORY}/xkb/symbols -maxdepth 1 ! -type d | while read file; do
-    inst $file $INITRDDIR
-done
-inst ${X11_DIRECTORY}/xkb/types/basic $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/complete $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/extra $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/iso9995 $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/level5 $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/mousekeys $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/numpad $INITRDDIR
-inst ${X11_DIRECTORY}/xkb/types/pc $INITRDDIR
-
-# In the off chance the user uses their compose key when
-# typing their password, install compose sequences
-inst ${X11_DIRECTORY}/locale/compose.dir $INITRDDIR
-grep UTF-8/Compose: ${X11_DIRECTORY}/locale/compose.dir | awk -F: '{ print $1 }' | sort -u | xargs dirname | while read DIR; do
-    find ${X11_DIRECTORY}/locale/$DIR -maxdepth 1 ! -type d | while read file; do
+if [ -d "${X11_DIRECTORY}" ]; then
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/"
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/compat/"
+
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/keycodes/"
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/rules/"
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/symbols/"
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/xkb/types/"
+    mkdir -p "${INITRDDIR}/${X11_DIRECTORY}/locale/"
+    inst ${X11_DIRECTORY}/xkb/compat/accessx $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/basic $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/caps $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/complete $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/iso9995 $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/ledcaps $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/lednum $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/ledscroll $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/level5 $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/misc $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/mousekeys $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/compat/xfree86 $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/keycodes/aliases $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/keycodes/evdev $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/rules/evdev $INITRDDIR
+    find ${X11_DIRECTORY}/xkb/symbols -maxdepth 1 ! -type d | while read file; do
         inst $file $INITRDDIR
-     done
-done
+    done
+    inst ${X11_DIRECTORY}/xkb/types/basic $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/complete $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/extra $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/iso9995 $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/level5 $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/mousekeys $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/numpad $INITRDDIR
+    inst ${X11_DIRECTORY}/xkb/types/pc $INITRDDIR
+
+    # In the off chance the user uses their compose key when
+    # typing their password, install compose sequences
+    inst ${X11_DIRECTORY}/locale/compose.dir $INITRDDIR
+    grep UTF-8/Compose: ${X11_DIRECTORY}/locale/compose.dir | awk -F: '{ print $1 }' | sort -u | xargs dirname | while read DIR; do
+        find ${X11_DIRECTORY}/locale/$DIR -maxdepth 1 ! -type d | while read file; do
+            inst $file $INITRDDIR
+         done
+    done
+fi
 
 if [ -z "$PLYMOUTH_THEME_NAME" ]; then
     echo "No default plymouth plugin is set" >&2
@@ -592,17 +594,18 @@ if [ "${PLYMOUTH_IMAGE_DIR}" != "${PLYMOUTH_THEME_DIR}" -a -d "${PLYMOUTH_SYSROO
      inst_recur "${PLYMOUTH_IMAGE_DIR}"
 fi
 
-DefaultFont=$(fc-match -f %{file})
-inst "$DefaultFont" $INITRDDIR
-DefaultMonospaceFont=$(fc-match -f %{file} monospace)
-inst "$DefaultMonospaceFont" $INITRDDIR
+DEFAULT_FONT=$(fc-match -f %{file})
+[ ! -z "$DEFAULT_FONT" ] && inst "$DEFAULT_FONT" $INITRDDIR
+DEFAULT_MONOSPACE_FONT=$(fc-match -f %{file} monospace)
+[ ! -z "$DEFAULT_MONOSPACE_FONT" ] && inst "$DEFAULT_FONT" $INITRDDIR
+inst "$DEFAULT_MONOSPACE_FONT" $INITRDDIR
 
 if [ -f "${PLYMOUTH_PLUGIN_PATH}/label-freetype.so" ]; then
      inst ${PLYMOUTH_PLUGIN_PATH}/label-freetype.so $INITRDDIR
      # The label-freetype plugin expects it at this location
      mkdir -p $INITRDDIR/usr/share/fonts
-     ln -s "$DefaultFont" $INITRDDIR/usr/share/fonts/Plymouth.ttf
-     ln -s "$DefaultMonospaceFont" $INITRDDIR/usr/share/fonts/Plymouth-monospace.ttf
+     ln -s "$DEFAULT_FONT" $INITRDDIR/usr/share/fonts/Plymouth.ttf
+     ln -s "$DEFAULT_MONOSPACE_FONT" $INITRDDIR/usr/share/fonts/Plymouth-monospace.ttf
 fi
 
 if [ -L ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ]; then