-Summary: Plymouth Graphical Boot Animation and Logger
+%global plymouthdaemon_execdir %{_sbindir}
+%global plymouthclient_execdir %{_bindir}
+%global plymouth_libdir %{_libdir}
+%global plymouth_initrd_file /boot/initrd-plymouth.img
+
+# Set to 1 if building from snapshots.
+%global snapshot_build 0
+
+%if %{snapshot_build}
+%global snapshot_date 20160620
+%global snapshot_hash 0e65b86c
+%global snapshot_rel %{?snapshot_date}git%{?snapshot_hash}
+%endif
+
+
+Summary: Graphical Boot Animation and Logger
Name: plymouth
-Version: 0.2.0
-Release: 0%{?dist}
+Version: 0.9.4
+Release: 3%{?snapshot_rel}%{?dist}
License: GPLv2+
-Group: System Environment/Base
-Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2
-URL: http://freedesktop.org/software/plymouth/releases
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+URL: http://www.freedesktop.org/wiki/Software/Plymouth
+
+Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.xz
+Source2: charge.plymouth
+Source3: plymouth-update-initrd
+
+Patch1: plymouth-updates.patch
+Patch2: 0001-drm-Fix-tiled-mode-detection.patch
+
+BuildRequires: gcc libtool git
+BuildRequires: pkgconfig(libdrm)
+BuildRequires: pkgconfig(libudev)
+BuildRequires: kernel-headers
+BuildRequires: libpng-devel
+BuildRequires: libxslt, docbook-style-xsl
+BuildRequires: pkgconfig(gtk+-3.0)
+BuildRequires: pango-devel >= 1.21.0
+BuildRequires: cairo-devel
+
+Requires(post): plymouth-scripts
%description
Plymouth provides an attractive graphical boot animation in
messages are instead redirected to a log file for viewing
after boot.
-%package libs
-Summary: Plymouth libraries
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
+%package system-theme
+Summary: Plymouth default theme
+Requires: plymouth(system-theme) = %{version}-%{release}
+
+%description system-theme
+This metapackage tracks the current distribution default theme.
-%description libs
+%package core-libs
+Summary: Plymouth core libraries
+
+%description core-libs
This package contains the libply and libply-splash-core libraries
used by Plymouth.
+%package graphics-libs
+Summary: Plymouth graphics libraries
+Requires: %{name}-core-libs = %{version}-%{release}
+Requires: system-logos
+
+%description graphics-libs
+This package contains the libply-splash-graphics library
+used by graphical Plymouth splashes.
+
%package devel
Summary: Libraries and headers for writing Plymouth splash plugins
-Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: pkgconfig
%description devel
-This package contains the libply and libply-splash-core libraries
+This package contains the libply and libplybootsplash libraries
and headers needed to develop 3rd party splash plugins for Plymouth.
-%package plugin-fade-in
-Summary: Plymouth "Fade-In" plugin
-Group: System Environment/Base
-Requires: %name = %{version}-%{release}
-BuildRequires: libpng-devel
-Provides: plymouth-plugin
+%package scripts
+Summary: Plymouth related scripts
+Requires: findutils, coreutils, gzip, cpio, dracut, plymouth
+
+%description scripts
+This package contains scripts that help integrate Plymouth with
+the system.
+
+%package plugin-label
+Summary: Plymouth label plugin
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-graphics-libs = %{version}-%{release}
+
+%description plugin-label
+This package contains the label control plugin for
+Plymouth. It provides the ability to render text on
+graphical boot splashes using pango and cairo.
+
+%package plugin-fade-throbber
+Summary: Plymouth "Fade-Throbber" plugin
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-graphics-libs = %{version}-%{release}
-%description plugin-fade-in
+%description plugin-fade-throbber
This package contains the "Fade-In" boot splash plugin for
+Plymouth. It features a centered image that fades in and out
+while other images pulsate around during system boot up.
+
+%package theme-fade-in
+Summary: Plymouth "Fade-In" theme
+Requires: %{name}-plugin-fade-throbber = %{version}-%{release}
+Requires(post): plymouth-scripts
+
+%description theme-fade-in
+This package contains the "Fade-In" boot splash theme for
Plymouth. It features a centered logo that fades in and out
while stars twinkle around the logo during system boot up.
-%package plugin-spinfinity
-Summary: Plymouth "Spinfinity" plugin
-Group: System Environment/Base
-Requires: %name = %{version}-%{release}
-BuildRequires: libpng-devel
-Provides: plymouth-plugin
+%package plugin-throbgress
+Summary: Plymouth "Throbgress" plugin
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-graphics-libs = %{version}-%{release}
+Requires: plymouth-plugin-label
-%description plugin-spinfinity
-This package contains the "Spinfinity" boot splash plugin for
+%description plugin-throbgress
+This package contains the "throbgress" boot splash plugin for
+Plymouth. It features a centered logo and animated spinner that
+spins repeatedly while a progress bar advances at the bottom of
+the screen.
+
+%package theme-spinfinity
+Summary: Plymouth "Spinfinity" theme
+Requires: %{name}-plugin-throbgress = %{version}-%{release}
+Requires(post): plymouth-scripts
+
+%description theme-spinfinity
+This package contains the "Spinfinity" boot splash theme for
Plymouth. It features a centered logo and animated spinner that
spins in the shape of an infinity sign.
+%package plugin-space-flares
+Summary: Plymouth "space-flares" plugin
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-graphics-libs = %{version}-%{release}
+Requires: plymouth-plugin-label
+
+%description plugin-space-flares
+This package contains the "space-flares" boot splash plugin for
+Plymouth. It features a corner image with animated flares.
+
+%package theme-solar
+Summary: Plymouth "Solar" theme
+Requires: %{name}-plugin-space-flares = %{version}-%{release}
+Requires(post): plymouth-scripts
+
+%description theme-solar
+This package contains the "Solar" boot splash theme for
+Plymouth. It features a blue flamed sun with animated solar flares.
+
+%package plugin-two-step
+Summary: Plymouth "two-step" plugin
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-graphics-libs = %{version}-%{release}
+Requires: plymouth-plugin-label
+
+%description plugin-two-step
+This package contains the "two-step" boot splash plugin for
+Plymouth. It features a two phased boot process that starts with
+a progressing animation synced to boot time and finishes with a
+short, fast one-shot animation.
+
+%package theme-charge
+Summary: Plymouth "Charge" plugin
+Requires: %{name}-plugin-two-step = %{version}-%{release}
+Requires(post): plymouth-scripts
+Provides: plymouth(system-theme) = %{version}-%{release}
+
+%description theme-charge
+This package contains the "charge" boot splash theme for
+Plymouth. It features the shadowy hull of a Fedora logo charge up and
+and finally burst into full form.
+
+%package plugin-script
+Summary: Plymouth "script" plugin
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-graphics-libs = %{version}-%{release}
+
+%description plugin-script
+This package contains the "script" boot splash plugin for
+Plymouth. It features an extensible, scriptable boot splash
+language that simplifies the process of designing custom
+boot splash themes.
+
+%package theme-script
+Summary: Plymouth "Script" plugin
+Requires: %{name}-plugin-script = %{version}-%{release}
+Requires(post): %{_sbindir}/plymouth-set-default-theme
+
+%description theme-script
+This package contains the "script" boot splash theme for
+Plymouth. It it is a simple example theme the uses the "script"
+plugin.
+
+%package theme-spinner
+Summary: Plymouth "Spinner" theme
+Requires: %{name}-plugin-two-step = %{version}-%{release}
+Requires(post): plymouth-scripts
+
+%description theme-spinner
+This package contains the "spinner" boot splash theme for
+Plymouth. It features a small spinner on a dark background.
+
%prep
-%setup -q
+%autosetup -S git
+autoreconf -ivf -Wno-portability
+
+# Change the default theme
+sed -i -e 's/spinner/charge/g' src/plymouthd.defaults
%build
-%configure --enable-tracing --disable-tests --without-boot-entry --without-default-plugin
+%configure --enable-tracing --disable-tests \
+ --with-logo=%{_datadir}/pixmaps/system-logo-white.png \
+ --with-background-start-color-stop=0x0073B3 \
+ --with-background-end-color-stop=0x00457E \
+ --with-background-color=0x3391cd \
+ --disable-gdm-transition \
+ --enable-systemd-integration \
+ --without-system-root-install \
+ --without-log-viewer \
+ --without-rhgb-compat-link \
+ --disable-libkms
make
%install
-rm -rf $RPM_BUILD_ROOT
-
make install DESTDIR=$RPM_BUILD_ROOT
-find $RPM_BUILD_ROOT -name '*.a' -exec rm -f {} \;
-find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} \;
+# Glow isn't quite ready for primetime
+rm -rf $RPM_BUILD_ROOT%{_datadir}/plymouth/glow/
+rm -f $RPM_BUILD_ROOT%{_libdir}/plymouth/glow.so
-%clean
-rm -rf $RPM_BUILD_ROOT
+find $RPM_BUILD_ROOT -name '*.a' -delete
+find $RPM_BUILD_ROOT -name '*.la' -delete
+
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/plymouth
+cp -f $RPM_SOURCE_DIR/plymouth-update-initrd $RPM_BUILD_ROOT%{_libexecdir}/plymouth
+
+# Add charge, our new default
+mkdir -p $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge
+cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge
+cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge
+
+# Drop glow, it's not very Fedora-y
+rm -rf $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow
%postun
-echo plymouth postun "$@"
if [ $1 -eq 0 ]; then
- rm %{_libdir}/plymouth/default.so
+ rm -f %{_libdir}/plymouth/default.so
+ rm -f /boot/initrd-plymouth.img
fi
-%post libs -p /sbin/ldconfig
-%postun libs -p /sbin/ldconfig
+%post core-libs -p /sbin/ldconfig
+%postun core-libs -p /sbin/ldconfig
-%post plugin-spinfinity
-echo plymouth-spinfinity post "$@"
-if [ $1 -eq 1 ]; then
- %{_sbindir}/plymouth-set-default-plugin spinfinity
+%post graphics-libs -p /sbin/ldconfig
+%postun graphics-libs -p /sbin/ldconfig
+
+%postun theme-spinfinity
+export LIB=%{_lib}
+if [ $1 -eq 0 ]; then
+ if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then
+ %{_sbindir}/plymouth-set-default-theme text
+ fi
+fi
+
+%postun theme-fade-in
+export LIB=%{_lib}
+if [ $1 -eq 0 ]; then
+ if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "fade-in" ]; then
+ %{_sbindir}/plymouth-set-default-theme --reset
+ fi
+fi
+
+%postun theme-spinner
+export LIB=%{_lib}
+if [ $1 -eq 0 ]; then
+ if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then
+ %{_sbindir}/plymouth-set-default-theme --reset
+ fi
fi
-%postun plugin-spinfinity
-echo plymouth-spinfinity postun "$@"
+%postun theme-solar
+export LIB=%{_lib}
if [ $1 -eq 0 ]; then
- if [ "$(%{_sbindir}/plymouth-set-default-plugin)" == "spinfinity" ]; then
- %{_sbindir}/plymouth-set-default-plugin --reset
+ if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then
+ %{_sbindir}/plymouth-set-default-theme --reset
fi
fi
-%post plugin-fade-in
-echo plymouth-fade-in post "$@"
+%post theme-charge
+export LIB=%{_lib}
if [ $1 -eq 1 ]; then
- %{_sbindir}/plymouth-set-default-plugin fade-in
+ %{_sbindir}/plymouth-set-default-theme charge
+else
+ if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then
+ %{_sbindir}/plymouth-set-default-theme charge
+ fi
fi
-%postun plugin-fade-in
-echo plymouth-fade-in postun "$@"
+%postun theme-charge
+export LIB=%{_lib}
if [ $1 -eq 0 ]; then
- if [ "$(%{_sbindir}/plymouth-set-default-plugin)" == "fade-in" ]; then
- %{_sbindir}/plymouth-set-default-plugin --reset
+ if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then
+ %{_sbindir}/plymouth-set-default-theme --reset
fi
fi
%files
-%defattr(-, root, root)
-%doc AUTHORS NEWS README
+%license COPYING
+%doc AUTHORS README
%dir %{_datadir}/plymouth
-%{_libexecdir}/plymouth/plymouthd
-%{_libexecdir}/plymouth/plymouth-update-initrd
-%{_libexecdir}/plymouth/plymouth-populate-initrd
-%{_sbindir}/plymouth-set-default-plugin
+%dir %{_datadir}/plymouth/themes
+%dir %{_datadir}/plymouth/themes/details
+%dir %{_datadir}/plymouth/themes/text
+%dir %{_libexecdir}/plymouth
+%dir %{_localstatedir}/lib/plymouth
+%dir %{_libdir}/plymouth/renderers
+%dir %{_sysconfdir}/plymouth
+%config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf
+%{plymouthdaemon_execdir}/plymouthd
+%{plymouthclient_execdir}/plymouth
%{_bindir}/plymouth
-%{_bindir}/rhgb-client
%{_libdir}/plymouth/details.so
%{_libdir}/plymouth/text.so
-%{_datadir}/plymouth/bizcom.png
+%{_libdir}/plymouth/tribar.so
+%{_datadir}/plymouth/themes/details/details.plymouth
+%{_datadir}/plymouth/themes/text/text.plymouth
+%{_datadir}/plymouth/themes/tribar/tribar.plymouth
+%{_datadir}/plymouth/plymouthd.defaults
%{_localstatedir}/run/plymouth
+%{_localstatedir}/spool/plymouth
+%{_mandir}/man?/*
+%ghost %{_localstatedir}/lib/plymouth/boot-duration
+%{_prefix}/lib/systemd/system/*
+%{_prefix}/lib/systemd/system/
%files devel
-%defattr(-, root, root)
-%{_libdir}/libply.so
-%{_libdir}/libply-splash-core.so
-%{_libdir}/pkgconfig/plymouth-1.pc
+%{plymouth_libdir}/libply.so
+%{plymouth_libdir}/libply-splash-core.so
+%{_libdir}/libply-boot-client.so
+%{_libdir}/libply-splash-graphics.so
+%{_libdir}/pkgconfig/ply-splash-core.pc
+%{_libdir}/pkgconfig/ply-splash-graphics.pc
+%{_libdir}/pkgconfig/ply-boot-client.pc
+%{_libdir}/plymouth/renderers/x11*
%{_includedir}/plymouth-1
-%files libs
-%defattr(-, root, root)
-%{_libdir}/libply.so.*
-%{_libdir}/libply-splash-core.so.*
-
-%files plugin-fade-in
-%defattr(-, root, root)
-%dir %{_datadir}/plymouth/fade-in
-%{_datadir}/plymouth/fade-in/bullet.png
-%{_datadir}/plymouth/fade-in/entry.png
-%{_datadir}/plymouth/fade-in/lock.png
-%{_datadir}/plymouth/fade-in/star.png
-%{_libdir}/plymouth/fade-in.so
-
-%files plugin-spinfinity
-%defattr(-, root, root)
-%dir %{_datadir}/plymouth/spinfinity
-%{_datadir}/plymouth/spinfinity/box.png
-%{_datadir}/plymouth/spinfinity/bullet.png
-%{_datadir}/plymouth/spinfinity/entry.png
-%{_datadir}/plymouth/spinfinity/lock.png
-%{_datadir}/plymouth/spinfinity/throbber-[0-3][0-9].png
-%{_libdir}/plymouth/spinfinity.so
+%files core-libs
+%{plymouth_libdir}/libply.so.*
+%{plymouth_libdir}/libply-splash-core.so.*
+%{_libdir}/libply-boot-client.so.*
+%dir %{_libdir}/plymouth
+
+%files graphics-libs
+%{_libdir}/libply-splash-graphics.so.*
+%{_libdir}/plymouth/renderers/drm*
+%{_libdir}/plymouth/renderers/frame-buffer*
+
+%files scripts
+%{_sbindir}/plymouth-set-default-theme
+%{_libexecdir}/plymouth/plymouth-update-initrd
+%{_libexecdir}/plymouth/plymouth-generate-initrd
+%{_libexecdir}/plymouth/plymouth-populate-initrd
+
+%files plugin-label
+%{_libdir}/plymouth/label.so
+
+%files plugin-fade-throbber
+%{_libdir}/plymouth/fade-throbber.so
+
+%files theme-fade-in
+%dir %{_datadir}/plymouth/themes/fade-in
+%{_datadir}/plymouth/themes/fade-in/bullet.png
+%{_datadir}/plymouth/themes/fade-in/entry.png
+%{_datadir}/plymouth/themes/fade-in/lock.png
+%{_datadir}/plymouth/themes/fade-in/star.png
+%{_datadir}/plymouth/themes/fade-in/fade-in.plymouth
+
+%files theme-spinner
+%{_datadir}/plymouth/themes/spinner/
+%{_datadir}/plymouth/themes/bgrt/
+
+%files plugin-throbgress
+%{_libdir}/plymouth/throbgress.so
+
+%files theme-spinfinity
+%dir %{_datadir}/plymouth/themes/spinfinity
+%{_datadir}/plymouth/themes/spinfinity/box.png
+%{_datadir}/plymouth/themes/spinfinity/bullet.png
+%{_datadir}/plymouth/themes/spinfinity/entry.png
+%{_datadir}/plymouth/themes/spinfinity/lock.png
+%{_datadir}/plymouth/themes/spinfinity/throbber-[0-3][0-9].png
+%{_datadir}/plymouth/themes/spinfinity/spinfinity.plymouth
+
+%files plugin-space-flares
+%{_libdir}/plymouth/space-flares.so
+
+%files theme-solar
+%dir %{_datadir}/plymouth/themes/solar
+%{_datadir}/plymouth/themes/solar/*.png
+%{_datadir}/plymouth/themes/solar/solar.plymouth
+
+%files plugin-two-step
+%{_libdir}/plymouth/two-step.so
+
+%files theme-charge
+%dir %{_datadir}/plymouth/themes/charge
+%{_datadir}/plymouth/themes/charge/*.png
+%{_datadir}/plymouth/themes/charge/charge.plymouth
+
+%files plugin-script
+%{_libdir}/plymouth/script.so
+
+%files theme-script
+%dir %{_datadir}/plymouth/themes/script
+%{_datadir}/plymouth/themes/script/*.png
+%{_datadir}/plymouth/themes/script/script.script
+%{_datadir}/plymouth/themes/script/script.plymouth
+
+%files system-theme
+
+%changelog