Commit 7247aaea authored by Xuetian Weng's avatar Xuetian Weng

add breeze-plymouth

parent d4f3bf70
#Contributions from Arch: https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/bluedevil-frameworks
source ../plasma.conf
pkgname=breeze-plymouth
pkgver=${PVersion}
pkgrel=1
pkgdesc="Breeze theme for Plymouth"
arch=('x86_64')
url='https://projects.kde.org/projects/kdereview/breeze-plymouth'
license=('LGPL')
depends=('plymouth')
makedepends=('extra-cmake-modules')
groups=('plasma')
options=("debug")
source=("${PServer}/${pkgver}/${pkgname}-${PSubVersion}.tar.xz")
sha256sums=( $(getSum ${pkgname}) )
prepare() {
mkdir -p build
cd ${pkgname}-${pkgver}
}
build() {
cd build
cmake_kf5 ../${pkgname}-${pkgver}
make
}
package() {
cd build
make DESTDIR="${pkgdir}" install
}
#
# Maintainer: Sebastian Lau <lauseb644@gmail.com>
# Contributor Damian01w <damian01w@gmail.com>
# Contributor: Padfoot <padfoot@exemail.com.au>
#
pkgname=plymouth
pkgver=0.9.2
pkgrel=1
pkgdesc="A graphical boot splash screen with kernel mode-setting support"
url="http://www.freedesktop.org/wiki/Software/Plymouth/"
arch=('i686' 'x86_64')
license=('GPL')
depends=('libdrm' 'pango' 'systemd')
makedepends=('docbook-xsl')
optdepends=('ttf-dejavu')
options=('!libtool' '!emptydirs')
provides=('plymouth')
conflicts=('plymouth-git')
backup=('etc/plymouth/plymouthd.conf')
source=("http://www.freedesktop.org/software/${pkgname}/releases/${pkgname}-${pkgver}.tar.bz2"
'chakra-logo.png'
'plymouth.encrypt_hook'
'plymouth.encrypt_install'
'plymouth-start.service'
'plymouth-start.path'
'plymouth.initcpio_hook'
'plymouth.initcpio_install'
'plymouth-quit.service.in.patch'
'plymouth-set-default-theme.in.patch'
'plymouth-update-initrd.patch')
md5sums=('ff420994deb7ea203df678df92e7ab7d'
'ea55756c8ee1f38c3017043d7036c409'
'fbdd5d04e3089a214b9056357434df86'
'65eb269910f1b81e3f0970af456394ca'
'78340207f7391c682601b1b36baed14d'
'672ad913e2383483bcb4599a0a6bee48'
'32f04fdbd1eb94ade30d1e63fdcdd9b5'
'a6dca3d57fd38b875d0520ec033dbf66'
'165a39dbedcc6e123c8ca05d5b4b2e25'
'f79edbbb30c71b0dbcd102c7dd31660b'
'0357775c16b5f90f1af485e6a4c80a9e')
prepare() {
cd "$srcdir"/${pkgname}-${pkgver}
patch -p1 -i $srcdir/plymouth-set-default-theme.in.patch
patch -p1 -i $srcdir/plymouth-update-initrd.patch
patch -p1 -i $srcdir/plymouth-quit.service.in.patch
}
build() {
cd "$srcdir"/${pkgname}-${pkgver}
LDFLAGS="$LDFLAGS -ludev" ./configure --prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--libdir=/usr/lib \
--libexecdir=/usr/lib \
--sbindir=/usr/bin \
--enable-systemd-integration \
--enable-drm \
--enable-tracing \
--enable-pango \
--enable-gtk=no \
--with-release-file=/etc/os-release \
--with-logo=/usr/share/plymouth/chakra-logo.png \
--with-background-color=0x000000 \
--with-background-start-color-stop=0x000000 \
--with-background-end-color-stop=0x4D4D4D \
--without-rhgb-compat-link \
--without-system-root-install
make
}
package() {
cd "$srcdir"/${pkgname}-${pkgver}
make DESTDIR="$pkgdir" install
install -Dm644 "$srcdir/chakra-logo.png" "$pkgdir/usr/share/plymouth/chakra-logo.png"
install -Dm644 "$srcdir/plymouth.encrypt_hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth-encrypt"
install -Dm644 "$srcdir/plymouth.encrypt_install" "$pkgdir/usr/lib/initcpio/install/plymouth-encrypt"
install -Dm644 "$srcdir/plymouth.initcpio_hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth"
install -Dm644 "$srcdir/plymouth.initcpio_install" "$pkgdir/usr/lib/initcpio/install/plymouth"
install -Dm644 "$srcdir/plymouth-start.service" "$pkgdir/usr/lib/systemd/system/plymouth-start.service"
install -Dm644 "$srcdir/plymouth-start.path" "$pkgdir/usr/lib/systemd/system/plymouth-start.path"
install -Dm644 "$pkgdir/usr/share/plymouth/plymouthd.defaults" "$pkgdir/etc/plymouth/plymouthd.conf"
}
diff -aur plymouth-0.8.8.src/systemd-units/plymouth-quit.service.in plymouth-0.8.8.patch/systemd-units/plymouth-quit.service.in
--- plymouth-0.8.8.src/systemd-units/plymouth-quit.service.in 2012-09-27 02:50:53.000000000 +1000
+++ plymouth-0.8.8.patch/systemd-units/plymouth-quit.service.in 2014-02-11 16:36:58.813194805 +1100
@@ -1,8 +1,9 @@
[Unit]
Description=Terminate Plymouth Boot Screen
After=rc-local.service plymouth-start.service systemd-user-sessions.service
+Before=getty@tty1.service
[Service]
-ExecStart=-@PLYMOUTH_CLIENT_DIR@/plymouth quit
+ExecStart=-@PLYMOUTH_CLIENT_DIR@/plymouth quit --retain-splash
Type=oneshot
TimeoutSec=20
diff -aur plymouth-0.8.8.src/scripts/plymouth-set-default-theme.in plymouth-0.8.8.patch/scripts/plymouth-set-default-theme.in
--- plymouth-0.8.8.src/scripts/plymouth-set-default-theme.in 2012-10-27 02:01:45.000000000 +1100
+++ plymouth-0.8.8.patch/scripts/plymouth-set-default-theme.in 2014-01-26 09:55:34.337189615 +1100
@@ -173,7 +173,10 @@
exit $?
fi
-if [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
+if [ -z ${THEME_NAME} ]; then
+ echo "Please specify a theme name"
+ exit 1
+elif [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
echo "${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth does not exist" > /dev/stderr
exit 1
fi
[Unit]
Description=Automatically Start Plymouth Boot Screen
[Path]
PathExistsGlob=/sys/class/graphics/fb*/device/drm/
Unit=plymouth-start.service
[Install]
WantedBy=sysinit.target
[Unit]
Description=Show Plymouth Boot Screen
DefaultDependencies=no
Wants=systemd-ask-password-plymouth.path systemd-vconsole-setup.service
After=systemd-vconsole-setup.service systemd-udev-trigger.service systemd-udevd.service
Before=systemd-ask-password-plymouth.service
ConditionKernelCommandLine=!plymouth.enable=0
[Service]
ExecStart=/usr/bin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
ExecStartPost=-/usr/bin/plymouth show-splash
Type=forking
KillMode=none
SendSIGKILL=no
[Install]
WantedBy=sysinit.target
diff -aur plymouth-0.9.0.src/scripts/plymouth-update-initrd plymouth-0.9.0.patch/scripts/plymouth-update-initrd
--- plymouth-0.9.0.src/scripts/plymouth-update-initrd 2014-01-16 08:14:47.000000000 +1100
+++ plymouth-0.9.0.patch/scripts/plymouth-update-initrd 2014-05-21 19:04:16.802594001 +1000
@@ -1,2 +1,4 @@
#!/bin/bash
-dracut -f
+find /etc/mkinitcpio.d/ -name \*.preset -a \! -name example.preset | while read p; do
+ mkinitcpio -p $p
+done
#!/bin/bash
run_hook() {
modprobe -a -q dm-crypt >/dev/null 2>&1
[ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
# Get keyfile if specified
ckeyfile="/crypto_keyfile.bin"
if [ -n "$cryptkey" ]; then
IFS=: read ckdev ckarg1 ckarg2 <<EOF
$cryptkey
EOF
if [ "$ckdev" = "rootfs" ]; then
ckeyfile=$ckarg1
elif resolved=$(resolve_device "${ckdev}" ${rootdelay}); then
case ${ckarg1} in
*[!0-9]*)
# Use a file on the device
# ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
mkdir /ckey
mount -r -t "$ckarg1" "$resolved" /ckey
dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
umount /ckey
;;
*)
# Read raw data from the block device
# ckarg1 is numeric: ckarg1=offset, ckarg2=length
dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
;;
esac
fi
[ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
fi
if [ -n "${cryptdevice}" ]; then
DEPRECATED_CRYPT=0
IFS=: read cryptdev cryptname cryptoptions <<EOF
$cryptdevice
EOF
else
DEPRECATED_CRYPT=1
cryptdev="${root}"
cryptname="root"
fi
warn_deprecated() {
echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
}
for cryptopt in ${cryptoptions//,/ }; do
case ${cryptopt} in
allow-discards)
cryptargs="${cryptargs} --allow-discards"
;;
*)
echo "Encryption option '${cryptopt}' not known, ignoring." >&2
;;
esac
done
if resolved=$(resolve_device "${cryptdev}" ${rootdelay}); then
if cryptsetup isLuks ${resolved} >/dev/null 2>&1; then
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
dopassphrase=1
# If keyfile exists, try to use that
if [ -f ${ckeyfile} ]; then
if eval cryptsetup --key-file ${ckeyfile} luksOpen ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; then
dopassphrase=0
else
echo "Invalid keyfile. Reverting to passphrase."
fi
fi
# Ask for a passphrase
if [ ${dopassphrase} -gt 0 ]; then
echo
echo "A password is required to access the ${cryptname} volume:"
plymouth ask-for-password --prompt="Password for ${cryptname} volume" --dont-pause-progress --number-of-tries=5 --command="/sbin/cryptsetup luksOpen --key-file=- ${cryptdev} ${cryptname} ${cryptargs} ${CSQUIET}"
sleep 2
fi
if [ -e "/dev/mapper/${cryptname}" ]; then
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
export root="/dev/mapper/root"
fi
else
err "Password succeeded, but ${cryptname} creation failed, aborting..."
exit 1
fi
elif [ -n "${crypto}" ]; then
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
msg "Non-LUKS encrypted device found..."
if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
err "Non-LUKS decryption not attempted..."
return 1
fi
exe="cryptsetup create $cryptname $resolved $cryptargs"
IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
$crypto
EOF
[ -n "$c_hash" ] && exe="$exe --hash '$c_hash'"
[ -n "$c_cipher" ] && exe="$exe --cipher '$c_cipher'"
[ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
[ -n "$c_offset" ] && exe="$exe --offset '$c_offset'"
[ -n "$c_skip" ] && exe="$exe --skip '$c_skip'"
if [ -f "$ckeyfile" ]; then
exe="$exe --key-file $ckeyfile"
else
exe="$exe --verify-passphrase"
echo ""
echo "A password is required to access the ${cryptname} volume:"
fi
eval "$exe $CSQUIET"
if [ $? -ne 0 ]; then
err "Non-LUKS device decryption failed. verify format: "
err " crypto=hash:cipher:keysize:offset:skip"
exit 1
fi
if [ -e "/dev/mapper/${cryptname}" ]; then
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
export root="/dev/mapper/root"
fi
else
err "Password succeeded, but ${cryptname} creation failed, aborting..."
exit 1
fi
else
err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
fi
fi
rm -f ${ckeyfile}
}
#!/bin/bash
build() {
local mod
add_module dm-crypt
if [[ $CRYPTO_MODULES ]]; then
for mod in $CRYPTO_MODULES; do
add_module "$mod"
done
else
add_all_modules '/crypto/'
fi
add_binary "cryptsetup"
add_binary "dmsetup"
add_file "/usr/lib/udev/rules.d/10-dm.rules"
add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
add_binary "/usr/lib/plymouth/label.so"
add_binary "/usr/lib/plymouth/text.so"
add_file "/usr/share/fonts/TTF/DejaVuSans.ttf"
add_file "/etc/fonts/fonts.conf"
add_file "/etc/fonts/conf.d/60-latin.conf"
add_runscript
}
help() {
cat <<HELPEOF
This hook allows for an encrypted root device. Users should specify the device
to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
where 'device' is the path to the raw device, and 'dmname' is the name given to
the device after unlocking, and will be available as /dev/mapper/dmname.
For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
the kernel cmdline, where 'device' represents the raw block device where the key
exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
the absolute path of the keyfile within the device.
Without specifying a keyfile, you will be prompted for the password at runtime.
This means you must have a keyboard available to input it, and you may need
the keymap hook as well to ensure that the keyboard is using the layout you
expect.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:
run_earlyhook(){
# first trigger graphics subsystem
udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
# first trigger graphics and tty subsystem
udevadm trigger --action=add --subsystem-match=graphics --subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1
udevadm settle --timeout=30 2>&1
/usr/bin/mknod /dev/fb c 29 &>/dev/null
/usr/bin/mkdir -p /dev/pts
/usr/bin/mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
/usr/bin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
}
run_hook() {
/usr/bin/plymouth --show-splash
}
run_latehook(){
/usr/bin/plymouth update-root-fs --new-root-dir=/new_root
}
# vim: set ft=sh:
build() {
add_dir /dev/pts
add_dir /usr/share/plymouth/themes
add_dir /var/run/plymouth
DATADIR="/usr/share"
PLYMOUTH_LOGO_FILE="${DATADIR}/plymouth/arch-logo.png"
PLYMOUTH_THEME_NAME="$(/usr/bin/plymouth-set-default-theme)"
PLYMOUTH_MODULE_NAME="$(grep "ModuleName *= *" ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')"
PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)"
add_binary /usr/bin/plymouthd
add_binary /usr/bin/plymouth
add_file ${DATADIR}/plymouth/themes/text/text.plymouth
add_binary ${PLYMOUTH_PLUGIN_PATH}/text.so
add_file ${DATADIR}/plymouth/themes/details/details.plymouth
add_binary ${PLYMOUTH_PLUGIN_PATH}/details.so
add_file "${PLYMOUTH_LOGO_FILE}"
add_file /etc/os-release
add_file /etc/plymouth/plymouthd.conf
add_file ${DATADIR}/plymouth/plymouthd.defaults
if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then
echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" > /dev/stderr
exit 1
fi
add_binary ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so
add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so
add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so
if [ -d ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then
for x in ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/* ; do
[ ! -f "$x" ] && break
add_file $x
done
fi
add_file /usr/lib/udev/rules.d/70-uaccess.rules
add_file /usr/lib/udev/rules.d/71-seat.rules
# suppress a warning in glib (which the label control uses)
# about uid 0 by building a dummy NSS stack (LP #649917)
add_file /etc/passwd
add_file /etc/nsswitch.conf
add_binary "$(readlink -e /lib/libnss_files.so.2)"
add_file /lib/libnss_files.so.2
add_runscript
}
help() {
echo "This hook includes plymouth in the initramfs image."
}
# vim: set ft=sh:
#EOF
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment