ff86aa
From 68f14b8a0163d688ca36541bc1e28173b0b62317 Mon Sep 17 00:00:00 2001
ff86aa
From: Ray Strode <rstrode@redhat.com>
ff86aa
Date: Mon, 20 Jul 2015 09:24:27 -0400
ff86aa
Subject: [PATCH] populate-initrd: ship label plugin / font in initrd
ff86aa
ff86aa
Some customers require showing text in the initrd, so
ff86aa
this commit goes ahead and ships label.so (and all its
ff86aa
dependencies) and one font in the initrd.
ff86aa
---
ff86aa
 scripts/plymouth-populate-initrd.in | 19 +++++++++++++++++++
ff86aa
 1 file changed, 19 insertions(+)
ff86aa
ff86aa
diff --git a/scripts/plymouth-populate-initrd.in b/scripts/plymouth-populate-initrd.in
ff86aa
index d25ab07..da55318 100755
ff86aa
--- a/scripts/plymouth-populate-initrd.in
ff86aa
+++ b/scripts/plymouth-populate-initrd.in
ff86aa
@@ -1,47 +1,48 @@
ff86aa
 #!/bin/bash
ff86aa
 #
ff86aa
 # inst bits ruthlessly and viciously stolen from dracut
ff86aa
 
ff86aa
 [ -z "$DESTDIR" ] || exit 0
ff86aa
 
ff86aa
 [ -z "$PLYMOUTH_LIBEXECDIR" ] && PLYMOUTH_LIBEXECDIR="@PLYMOUTH_LIBEXECDIR@"
ff86aa
 [ -z "$PLYMOUTH_DATADIR" ] && PLYMOUTH_DATADIR="@PLYMOUTH_DATADIR@"
ff86aa
 [ -z "$PLYMOUTH_PLUGIN_PATH" ] && PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)"
ff86aa
 [ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="@PLYMOUTH_LOGO_FILE@"
ff86aa
 [ -n "$PLYMOUTH_THEME_NAME" ] && THEME_OVERRIDE=1
ff86aa
 [ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme)
ff86aa
 [ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="@PLYMOUTH_CONF_DIR@"
ff86aa
 [ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="@PLYMOUTH_POLICY_DIR@"
ff86aa
 [ -z "$PLYMOUTH_DAEMON_PATH" ] && PLYMOUTH_DAEMON_PATH="@PLYMOUTH_DAEMON_DIR@/plymouthd"
ff86aa
 [ -z "$PLYMOUTH_CLIENT_PATH" ] && PLYMOUTH_CLIENT_PATH="@PLYMOUTH_CLIENT_DIR@/plymouth"
ff86aa
 [ -z "$SYSTEMD_UNIT_DIR" ] && SYSTEMD_UNIT_DIR="@SYSTEMD_UNIT_DIR@"
ff86aa
+[ -z "$SUPPORTED_LANGUAGES" ] && SUPPORTED_LANGUAGES="pt fr de it ru es en zh ja ko zh as bn gu hi kn ml mr or pa ta te"
ff86aa
 
ff86aa
 # Generic substring function.  If $2 is in $1, return 0.
ff86aa
 strstr() { [ "${1#*$2*}" != "$1" ]; }
ff86aa
 
ff86aa
 ddebug() {
ff86aa
     [ "$verbose" = "true" ] && echo "$@"
ff86aa
 }
ff86aa
 
ff86aa
 # normalize_path <path>
ff86aa
 # Prints the normalized path, where it removes any duplicated
ff86aa
 # and trailing slashes.
ff86aa
 # Example:
ff86aa
 # $ normalize_path ///test/test//
ff86aa
 # /test/test
ff86aa
 normalize_path() {
ff86aa
     shopt -q -s extglob
ff86aa
     set -- "${1//+(\/)//}"
ff86aa
     shopt -q -u extglob
ff86aa
     echo "${1%/}"
ff86aa
 }
ff86aa
 
ff86aa
 # convert_abs_rel <from> <to>
ff86aa
 # Prints the relative path, when creating a symlink to <to> from <from>.
ff86aa
 # Example:
ff86aa
 # $ convert_abs_rel /usr/bin/test /bin/test-2
ff86aa
 # ../../bin/test-2
ff86aa
 # $ ln -s $(convert_abs_rel /usr/bin/test /bin/test-2) /usr/bin/test
ff86aa
 convert_abs_rel() {
ff86aa
     local __current __absolute __abssize __cursize __newpath
ff86aa
     local -i __i __level
ff86aa
@@ -387,59 +388,77 @@ inst ${PLYMOUTH_CONFDIR}/plymouthd.conf $INITRDDIR
ff86aa
 if [ -z "$PLYMOUTH_THEME_NAME" ]; then
ff86aa
     echo "No default plymouth plugin is set" > /dev/stderr
ff86aa
     exit 1
ff86aa
 fi
ff86aa
 
ff86aa
 if [ $THEME_OVERRIDE ]; then
ff86aa
     conf=$INITRDDIR/${PLYMOUTH_CONFDIR}/plymouthd.conf
ff86aa
     echo "modifying plymouthd.conf: Theme=$PLYMOUTH_THEME_NAME" > /dev/stderr
ff86aa
     sed -i "s/^ *Theme *=.*/# theme modified by plymouth-populate-initrd\nTheme=$PLYMOUTH_THEME_NAME/" $conf
ff86aa
 fi
ff86aa
 
ff86aa
 PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
ff86aa
 
ff86aa
 if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then
ff86aa
     echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" > /dev/stderr
ff86aa
     exit 1
ff86aa
 fi
ff86aa
 
ff86aa
 inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR
ff86aa
 
ff86aa
 [ -f "${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so" ] && inst ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so $INITRDDIR
ff86aa
 inst ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so $INITRDDIR
ff86aa
 
ff86aa
 if [ -d ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then
ff86aa
     for x in ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/* ; do
ff86aa
         [ ! -f "$x" ] && continue
ff86aa
         inst $x $INITRDDIR
ff86aa
     done
ff86aa
 fi
ff86aa
 
ff86aa
+fonts=""
ff86aa
+needs_graphics="$(find ${INITRDDIR} -name 'libply-splash-graphics.so*' -print -quit | grep -q libply-splash-graphics.so && echo -n 1)"
ff86aa
+
ff86aa
+if [ -n "$needs_graphics" ]; then
ff86aa
+    for lang in $SUPPORTED_LANGUAGES; do
ff86aa
+        font=$(fc-match "":lang="$lang" file | awk -F= '{ print $2}')
ff86aa
+        echo $fonts | grep -q "$font" && continue
ff86aa
+        fonts="$fonts $font"
ff86aa
+    done
ff86aa
+
ff86aa
+    if [ -n "$fonts" ]; then
ff86aa
+        inst ${PLYMOUTH_PLUGIN_PATH}/label.so $INITRDDIR
ff86aa
+        for font in $fonts; do
ff86aa
+            inst $font $INITRDDIR
ff86aa
+        done
ff86aa
+    fi
ff86aa
+fi
ff86aa
+
ff86aa
 if [ -L ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ]; then
ff86aa
     cp -a ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth $INITRDDIR${PLYMOUTH_DATADIR}/plymouth/themes
ff86aa
 fi
ff86aa
 
ff86aa
 if [ -n "$SYSTEMD_UNIT_DIR" -a -d "$SYSTEMD_UNIT_DIR" ]; then
ff86aa
     inst $SYSTEMD_UNIT_DIR/systemd-ask-password-plymouth.path $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/systemd-ask-password-plymouth.service $INITRDDIR
ff86aa
 
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-switch-root.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-start.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-quit.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-quit-wait.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-reboot.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-kexec.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-poweroff.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/plymouth-halt.service $INITRDDIR
ff86aa
 
ff86aa
     inst $SYSTEMD_UNIT_DIR/initrd-switch-root.target.wants/plymouth-switch-root.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/initrd-switch-root.target.wants/plymouth-start.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/sysinit.target.wants/plymouth-start.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/multi-user.target.wants/plymouth-quit.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/multi-user.target.wants/plymouth-quit-wait.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/reboot.target.wants/plymouth-reboot.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/kexec.target.wants/plymouth-kexec.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/poweroff.target.wants/plymouth-poweroff.service $INITRDDIR
ff86aa
     inst $SYSTEMD_UNIT_DIR/halt.target.wants/plymouth-halt.service $INITRDDIR
ff86aa
 fi
ff86aa
 
ff86aa
 # vim:ts=8:sw=4:sts=4:et
ff86aa
-- 
ff86aa
2.3.7
ff86aa