50plymouth: improve distro compatibility

The existence of dpkg-achitecture is not indicative of a debian
installation. It may well be installed on systems of people who
package for both distros. The previous code path did not take
that into account.

We now traverse all known plymouth directories, locking on the first
valid one, and try to work with it.

At the same time, we do not include the module if the plymouth directory
could not be found.
master
Daniel Molkentin 2018-01-18 17:45:01 +01:00 committed by Harald Hoyer
parent c88c3215e8
commit 421b46f8ae
1 changed files with 16 additions and 6 deletions

View File

@ -1,8 +1,23 @@
#!/bin/bash

pkglib_dir() {
local _dirs="/usr/lib/plymouth /usr/libexec/plymouth/"
if type -P dpkg-architecture &>/dev/null; then
_dirs+=" /usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/plymouth"
fi
for _dir in $_dirs; do
if [ -d $_dir ]; then
echo $_dir
return
fi
done
}

# called by dracut
check() {
[[ "$mount_needs" ]] && return 1
[ -z $(pkglib_dir) ] && return 1

require_binaries plymouthd plymouth plymouth-set-default-theme
}

@ -13,12 +28,7 @@ depends() {

# called by dracut
install() {
PKGLIBDIR="/usr/lib/plymouth"
if type -P dpkg-architecture &>/dev/null; then
PKGLIBDIR="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/plymouth"
fi
[ -x /usr/libexec/plymouth/plymouth-populate-initrd ] && PKGLIBDIR="/usr/libexec/plymouth"

PKGLIBDIR=$(pkglib_dir)
if grep -q nash ${PKGLIBDIR}/plymouth-populate-initrd \
|| [ ! -x ${PKGLIBDIR}/plymouth-populate-initrd ]; then
. "$moddir"/plymouth-populate-initrd.sh