File plymouth.spec of Package plymouth.603

#
# spec file for package plymouth
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%define plymouthdaemon_execdir %{_sbindir}
%define plymouthclient_execdir %{_bindir}
%define plymouth_libdir %{_libdir}
%define plymouth_initrd_file /boot/initrd-plymouth.img

Name:           plymouth
Version:        0.9.0
Release:        0
Summary:        Graphical Boot Animation and Logger
License:        GPL-2.0+
Group:          System/Base
Url:            http://freedesktop.org/software/plymouth/releases
Source0:        %{name}-%{version}.tar.bz2
Source1:        boot-duration
# PATCH-OPENSUSE -- Handle correctly multiple displays with different sizes
Patch3:         plymouth-fix-window-size
# PATCH-OPENSUSE -- Ensure graphical.target is conflicting with plymouth-wait-quit.service
Patch4:         stop-graphical.patch
# PATCH-OPENSUSE -- prefix is /usr/sbin and /usr/bin
Patch9:         plymouth-dracut-path.patch
Patch10:        0001-Some-greenish-openSUSE-colors.patch
# PATCH-OPENSUSE -- plymouth-correct-runtime-dir.patch tittiatcoke@gmail.com -- make sure the runtime directory is /run and not /var/run
Patch16:        plymouth-correct-runtime-dir.patch
# PATCH-FIX-UPSTREAM plymouth-manpages.patch idoenmez@suse.de -- Fix man page installation
Patch17:        plymouth-manpages.patch
Patch18:        fix-serial-consoles.patch
# PATCH-FIX-UPSTREAM 0001-device-manager-only-call-ply_terminal_free.patch fcrozat@suse.com -- Fix crash
Patch19:        0001-device-manager-only-call-ply_terminal_free.patch
# PATCH-FIX-OPENSUSE use-mkinitrd.patch fcrozat@suse.com -- call mkinitrd -B for now
Patch20:        use-mkinitrd.patch
# PATCH-FIX-UPSTREAM 0001-seats-guard-against-NULL-terminal.patch fcrozat@suse.com -- guard against null terminal
Patch21:        0001-seats-guard-against-NULL-terminal.patch
# PATCH-FIX-UPSTREAM 0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch fcrozat@suse.com -- prevent crash if pixel display is removed
Patch22:        0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch
# PATCH-FIX-UPSTREAM 0001-splash-do-not-process-display-lists-if-it-is-empty.patch fcrozat@suse.com -- do no crash when removing displays
Patch23:        0001-splash-do-not-process-display-lists-if-it-is-empty.patch
# PATCH-FIX-UPSTREAM 0001-libply-splash-core-also-monitor-for-file-removal-in-.patch fcrozat@suse.com -- handle recent udev
Patch24:        0001-libply-splash-core-also-monitor-for-file-removal-in-.patch
# PATCH-FIX-UPSTREAM 0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch fcrozat@suse.com -- handle empty seat better
Patch25:        0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch
# PATCH-FIX-UPSTREAM plymouth-ignore-cirrusdrm.patch fcrozat@suse.com -- ignore cirrusdrm, use fb instead
Patch26:        plymouth-ignore-cirrusdrm.patch
# PATCH-FIX-UPSTREAM 0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch bnc#886148 fcrozat@suse.com -- fix UTF-8 code for square
Patch27:        0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch
Patch28:        plymouth-boot-vga-framebuffer.patch
Patch29:        0001-let-it-become-a-real-daemon.patch
Patch30:        plymouth-filter-escape-codes.patch
# PATCH-SUSE -- Make sure that the request of init=/bin/bash does not forget plymouth.enable=0
Patch31:        holding_hands.patch
BuildRequires:  automake
BuildRequires:  docbook-xsl-stylesheets
BuildRequires:  kernel-headers
BuildRequires:  libtool
BuildRequires:  libudev-devel
BuildRequires:  libxslt
BuildRequires:  module-init-tools
BuildRequires:  update-desktop-files
BuildRequires:  xz
BuildRequires:  pkgconfig(libdrm)
BuildRequires:  pkgconfig(systemd) >= 186
Requires:       %{name}-branding
Requires:       gnu-unifont-bitmap-fonts
Requires:       systemd >= 186
Requires(post): plymouth-scripts = %{version}
BuildRequires:  suse-module-tools
Suggests:       plymouth-plugin-label
Provides:       bootsplash = 3.4
Obsoletes:      bootsplash <= 3.4
Provides:       systemd-plymouth = 44-10.2
Obsoletes:      systemd-plymouth <= 44-10.1

%description
Plymouth provides an attractive graphical boot animation in
place of the text messages that normally get shown.  Text
messages are instead redirected to a log file for viewing
after boot.

%package -n libply-boot-client2
Summary:        Plymouth core library
Group:          Development/Libraries/C and C++

%description -n libply-boot-client2
This package contains the libply-boot-client library used by Plymouth.

%package -n libply-splash-core2
Summary:        Plymouth core library
Group:          Development/Libraries/C and C++

%description -n libply-splash-core2
This package contains the libply-splash-core library
used by graphical Plymouth splashes.

%package -n libply-splash-graphics2
Summary:        Plymouth graphics libraries
Group:          Development/Libraries/C and C++
BuildRequires:  libpng-devel

%description -n libply-splash-graphics2
This package contains the libply-splash-graphics library
used by graphical Plymouth splashes.

%package -n libply2
Summary:        Plymouth core library
Group:          Development/Libraries/C and C++
Requires:       libply-boot-client2 = %{version}

%description -n libply2
This package contains the libply library used by Plymouth.

%package devel
Summary:        Libraries and headers for writing Plymouth splash plugins
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}
Requires:       %{name}-x11-renderer = %{version}
Requires:       libply-boot-client2 = %{version}
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}
Requires:       pkgconfig

%description devel
This package contains the libply and libplybootsplash libraries
and headers needed to develop 3rd party splash plugins for Plymouth.

%package utils
Summary:        Plymouth related utilities
Group:          System/Base
BuildRequires:  pkgconfig(gtk+-2.0)
Requires:       %{name} = %{version}

%description utils
This package contains utilities that integrate with Plymouth
including a boot log viewing application.

%package dracut
Summary:        Plymouth related utilities for dracut
Group:          System/Base
Supplements:    packageand(plymouth:dracut)
Requires:       %{name} = %{version}

%description dracut
This package contains utilities that integrate dracut with Plymouth

%package x11-renderer
Summary:        Plymouth X11 renderer
Group:          System/Base
Requires:       %{name} = %{version}

%description x11-renderer
This package provides the X11 renderer which allows to test plymouth
behavior on environments with a valid DISPLAY.

%package scripts
Summary:        Plymouth related scripts
Group:          System/Base
Requires(pre):  %{name} = %{version}
Requires:       coreutils
Requires:       cpio
Requires:       findutils
Requires:       pigz

%description scripts
This package contains scripts that help integrate Plymouth with
the system.

%package plugin-label
Summary:        Plymouth label plugin
Group:          System/Base
BuildRequires:  pkgconfig(cairo)
BuildRequires:  pkgconfig(pango) >= 1.21.0
Requires:       libply-splash-core2 = %{version}

%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
Group:          System/Base
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}

%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 plugin-throbgress
Summary:        Plymouth "Throbgress" plugin
Group:          System/Base
Requires:       %{name}-plugin-label = %{version}
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}

%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 plugin-space-flares
Summary:        Plymouth "space-flares" plugin
Group:          System/Base
Requires:       %{name}-plugin-label = %{version}
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}

%description plugin-space-flares
This package contains the "space-flares" boot splash plugin for
Plymouth. It features a corner image with animated flares.

%package plugin-two-step
Summary:        Plymouth "two-step" plugin
Group:          System/Base
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}
Requires:       plymouth-plugin-label = %{version}

%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 plugin-script
Summary:        Plymouth "script" plugin
Group:          System/Base
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}

%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 plugin-tribar
Summary:        Plymouth "script" plugin
Group:          System/Base
Requires:       libply-splash-core2 = %{version}
Requires:       libply-splash-graphics2 = %{version}
Requires:       libply2 = %{version}

%description plugin-tribar
This package contains the "tribar" 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-fade-in
Summary:        Plymouth "Fade-In" theme
Group:          System/Base
Requires:       %{name}-plugin-fade-throbber = %{version}
Requires:       plymouth-plugin-label = %{version}
Requires(post): %{name}-scripts
BuildArch:      noarch

%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 theme-spinfinity
Summary:        Plymouth "Spinfinity" theme
Group:          System/Base
Requires:       %{name}-plugin-throbgress = %{version}
Requires(pre):  %{name}
Requires(post): %{name}-scripts
BuildArch:      noarch

%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 theme-spinner
Summary:        Plymouth "Spinner" theme
Group:          System/Base
Requires:       %{name}-plugin-two-step = %{version}
Requires(post): %{name}-scripts
BuildArch:      noarch

%description theme-spinner
This package contains the "spinner" boot splash theme for
Plymouth.

%package theme-solar
Summary:        Plymouth "Solar" theme
Group:          System/Base
Requires:       %{name}-plugin-space-flares = %{version}
Requires(post): %{name}-scripts
BuildArch:      noarch

%description theme-solar
This package contains the "Solar" boot splash theme for
Plymouth. It features a blue flamed sun with animated solar flares.

%package theme-tribar
Summary:        Plymouth "Tribar" theme
Group:          System/Base
Requires:       %{name}-plugin-tribar = %{version}
Requires(post): %{name}-scripts
BuildArch:      noarch

%description theme-tribar
This package contains the "Tribar" boot splash theme for
Plymouth

%package theme-script
Summary:        Plymouth "Script" plugin
Group:          System/Base
Requires:       %{name}-plugin-script = %{version}
Requires(post): %{name}-scripts
BuildArch:      noarch

%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.

%prep
%setup -q
%patch3 -p1
%patch4 -p1
%patch9 -p0
%patch10 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p0

# replace builddate with patch0date
sed -i "s/__DATE__/\"$(stat -c %y %{_sourcedir}/%{name}.changes)\"/" src/main.c

# Change the default theme

%if %{suse_version} == 1315
sed -i -e 's/spinner/SLE/g' src/plymouthd.defaults
%else
sed -i -e 's/spinner/openSUSE/g' src/plymouthd.defaults
%endif

%build
autoreconf -fiv
%configure --disable-static                                      \
           --enable-systemd-integration                          \
           --enable-tracing --disable-tests                      \
           --with-background-start-color-stop=0x1A3D1F           \
           --with-background-end-color-stop=0x4EA65C             \
           --with-background-color=0x3391cd                      \
           --disable-gdm-transition                              \
           --without-system-root-install                         \
           --with-log-viewer                                     \
           --without-rhgb-compat-link                            \
           --with-boot-tty=/dev/tty7                             \
           --with-shutdown-tty=/dev/tty1                         \
           --without-gdm-autostart-file                          \
           --with-release-file=/etc/os-release

make %{?_smp_mflags} V=1

%install

%make_install
rm -f %{buildroot}/%{_bindir}/rhgb-client

#Link the plymouth client binary also to /bin until the move to /usr is completed
mkdir %{buildroot}/bin
(cd %{buildroot}/bin; ln -s ../usr/bin/plymouth)

# Glow isn't quite ready for primetime
rm -rf %{buildroot}%{_datadir}/plymouth/glow/
rm -rf %{buildroot}%{_datadir}/plymouth/themes/glow/
rm -f %{buildroot}%{_libdir}/plymouth/glow.so

find %{buildroot} -name '*.a' -exec rm -f {} \;
find %{buildroot} -name '*.la' -exec rm -f {} \;

mkdir -p %{buildroot}%{_localstatedir}/lib/plymouth
mkdir -p %{buildroot}/run/plymouth
mkdir -p %{buildroot}%{_localstatedir}/log
touch %{buildroot}%{_localstatedir}/log/boot.log
touch %{buildroot}%{_localstatedir}/spool/plymouth/boot.log
cp $RPM_SOURCE_DIR/boot-duration %{buildroot}%{_datadir}/plymouth/default-boot-duration
cp $RPM_SOURCE_DIR/boot-duration %{buildroot}%{_localstatedir}/lib/plymouth
cp %{buildroot}/%{_datadir}/plymouth/plymouthd.defaults %{buildroot}/%{_sysconfdir}/plymouth/plymouthd.conf

%post
%{?regenerate_initrd_post}
if [ ! -e /.buildenv ]; then 
   [ -f %{_localstatedir}/lib/plymouth/boot-duration ] || cp -f %{_datadir}/plymouth/default-boot-duration %{_localstatedir}/lib/plymouth/boot-duration
fi
[ -x /bin/systemctl ] && /bin/systemctl daemon-reload >/dev/null 2>&1 || :

%postun
if [ $1 -eq 0 ]; then
    rm -f %{_libdir}/plymouth/default.so
    rm -f /boot/initrd-plymouth.img
    [ -x /bin/systemctl ] && /bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi

%posttrans
%{?regenerate_initrd_posttrans}

%post -n libply-boot-client2 -p /sbin/ldconfig

%postun -n libply-boot-client2 -p /sbin/ldconfig

%post -n libply-splash-core2 -p /sbin/ldconfig

%postun -n libply-splash-core2 -p /sbin/ldconfig

%post -n libply-splash-graphics2 -p /sbin/ldconfig

%postun -n libply-splash-graphics2 -p /sbin/ldconfig

%post -n libply2 -p /sbin/ldconfig

%postun -n libply2 -p /sbin/ldconfig

%post theme-spinfinity
if [ $1 -eq 1 ]; then
  set -x
  export LIB=%{_libdir}
  OTHEME="$(%{_sbindir}/plymouth-set-default-theme)"
  if [ "$OTHEME" == "text" ]; then
     if [ ! -e /.buildenv ]; then
       %{_sbindir}/plymouth-set-default-theme -R spinfinity
     else
       %{_sbindir}/plymouth-set-default-theme spinfinity
     fi 
  fi
fi

%postun theme-spinfinity
if [ $1 -eq 0 ]; then
    export LIB=%{_libdir}
    if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then
        %{_sbindir}/plymouth-set-default-theme -R --reset
    fi
fi

%post theme-fade-in
if [ $1 -eq 1 ]; then
  set -x
  export LIB=%{_libdir}
  OTHEME="$(%{_sbindir}/plymouth-set-default-theme)"
  if [ "$OTHEME" == "text" ]; then
     if [ ! -e /.buildenv ]; then
       %{_sbindir}/plymouth-set-default-theme -R fade-in
     else
       %{_sbindir}/plymouth-set-default-theme fade-in
     fi 
  fi
fi

%postun theme-fade-in
if [ $1 -eq 0 ]; then
    export LIB=%{_libdir}
    if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "fade-in" ]; then
        %{_sbindir}/plymouth-set-default-theme -R --reset
    fi
fi

%post theme-solar
if [ $1 -eq 1 ]; then
  set -x
  export LIB=%{_libdir}
  OTHEME="$(%{_sbindir}/plymouth-set-default-theme)"
  if [ "$OTHEME" == "text" ]; then
     if [ ! -e /.buildenv ]; then
       %{_sbindir}/plymouth-set-default-theme -R solar
     else
       %{_sbindir}/plymouth-set-default-theme solar
     fi 
  fi
fi

%postun theme-solar
if [ $1 -eq 0 ]; then
    export LIB=%{_libdir}
    if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then
        %{_sbindir}/plymouth-set-default-theme -R --reset
    fi
fi

%files
%defattr(-, root, root)
%doc AUTHORS NEWS README
%dir %{_datadir}/plymouth
%dir %{_datadir}/plymouth/themes
%dir %{_datadir}/plymouth/themes/details
%dir %{_datadir}/plymouth/themes/text
%dir %{_localstatedir}/lib/plymouth
%dir %{_libdir}/plymouth
%dir %{_libdir}/plymouth/renderers
%dir %{_sysconfdir}/plymouth
%config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf
%{plymouthdaemon_execdir}/plymouthd
%{plymouthclient_execdir}/plymouth
/bin/plymouth
%{_libdir}/plymouth/details.so
%{_libdir}/plymouth/text.so
%{_libdir}/plymouth/renderers/drm*
%{_libdir}/plymouth/renderers/frame-buffer*
%{_datadir}/plymouth/default-boot-duration
%{_datadir}/plymouth/themes/details/details.plymouth
%{_datadir}/plymouth/themes/text/text.plymouth
%{_datadir}/plymouth/plymouthd.defaults
%{_datadir}/plymouth/bizcom.png
%ghost /run/plymouth
%{_localstatedir}/spool/plymouth
%{_mandir}/man?/*
%ghost %{_localstatedir}/lib/plymouth/boot-duration
%{_unitdir}/*
%ghost %{_localstatedir}/log/boot.log
%ghost %{_localstatedir}/spool/plymouth/boot.log

%files dracut
%defattr(-, root, root)
%{_libexecdir}/plymouth/plymouth-populate-initrd
%{_libexecdir}/plymouth/plymouth-generate-initrd

%files devel
%defattr(-, root, root)
%{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
%{_includedir}/plymouth-1

%files -n libply-boot-client2
%defattr(-, root, root)
%{_libdir}/libply-boot-client.so.2*

%files -n libply-splash-core2
%defattr(-, root, root)
%{plymouth_libdir}/libply-splash-core.so.2*

%files -n libply-splash-graphics2
%defattr(-, root, root)
%{_libdir}/libply-splash-graphics.so.2*

%files -n libply2
%defattr(-, root, root)
%{plymouth_libdir}/libply.so.2*

%files scripts
%defattr(-, root, root)
%dir %{_libexecdir}/plymouth
%{_sbindir}/plymouth-set-default-theme
%{_libexecdir}/plymouth/plymouth-update-initrd

%files utils
%defattr(-, root, root)
%{_bindir}/plymouth-log-viewer

%files x11-renderer
%defattr(-,root,root,-)
%{_libdir}/plymouth/renderers/x11*

%files plugin-label
%defattr(-, root, root)
%{_libdir}/plymouth/label.so

%files plugin-fade-throbber
%defattr(-, root, root)
%{_libdir}/plymouth/fade-throbber.so

%files theme-fade-in
%defattr(-, root, root)
%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 plugin-throbgress
%defattr(-, root, root)
%{_libdir}/plymouth/throbgress.so

%files theme-spinfinity
%defattr(-, root, root)
%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
%defattr(-, root, root)
%{_libdir}/plymouth/space-flares.so

%files theme-spinner
%defattr(-, root, root)
%dir %{_datadir}/plymouth/themes/spinner
%{_datadir}/plymouth/themes/spinner/*.*

%files theme-solar
%defattr(-, root, root)
%dir %{_datadir}/plymouth/themes/solar
%{_datadir}/plymouth/themes/solar/*.png
%{_datadir}/plymouth/themes/solar/solar.plymouth

%files theme-tribar
%defattr(-, root, root)
%dir %{_datadir}/plymouth/themes/tribar
%{_datadir}/plymouth/themes/tribar/*.*

%files plugin-two-step
%defattr(-, root, root)
%{_libdir}/plymouth/two-step.so

%files plugin-tribar
%defattr(-, root, root)
%{_libdir}/plymouth/tribar.so

%files plugin-script
%defattr(-, root, root)
%{_libdir}/plymouth/script.so

%files theme-script
%defattr(-, root, root)
%dir %{_datadir}/plymouth/themes/script/
%{_datadir}/plymouth/themes/script/*.png
%{_datadir}/plymouth/themes/script/script.script
%{_datadir}/plymouth/themes/script/script.plymouth

%changelog
openSUSE Build Service is sponsored by