#
# spec file for package blog
#
# Copyright (c) 2021 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#


Name:           blog
Version:        2.20
%define sonum   2
Release:        2.2
Summary:        Boot logging
License:        GPL-2.0-or-later
Group:          System/Base
URL:            https://github.com/bitstreamout/showconsole
Source:         https://github.com/bitstreamout/showconsole/archive/v%{version}.tar.gz#/showconsole-%{version}.tar.gz
Source1:        blog-rpmlintrc
BuildRequires:  suse-module-tools
Requires(post): coreutils
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Provides:       sysvinit-tools:/sbin/blogd

%description
The blogd daemon determines the real underlying character device of
/dev/console. Blogd spawns a pty/tty pair to reconnect the current
/dev/console with the slave of the pty/tty pair. During writing
information from this slave to the real character device a ring
buffer is used to hold the information for writing it to an existing
logging file.

%package -n libblogger%{sonum}
Summary:        FIFO interface used by startproc
Group:          System/Libraries
%if %sonum == 2
Provides:       %{name}:%{_libdir}/libblogger.so.2
%endif

%description -n libblogger%{sonum}
The libaray for the FIFO interface used by the LSB startproc command.

%package	plymouth
Summary:        Replaces plymouth by blogd
Group:          System/Base
Requires:       blog
Requires:       systemd
Conflicts:      plymouth
Conflicts:      plymouth-dracut

%description	plymouth
The Blogd daemon can be used as a replacement for Plymouth in situations where
a splash screen and/or usage of a frame buffer is unwanted.  The Blogd is also
a Plymouth agent. That means, it can handle requests for a password prompt by
the system password service of systemd.
The blogd daemon writes out boot log messages to every terminal device used by
/dev/console and to the log file /var/log/boot.log.  When halting or rebooting
the system, it moves the log file to /var/log/boot.old and appends all log
messages upto to point at which the file systems becomes unavailable.

%package	devel
Summary:        Provides library and header for boot logging
Group:          Development/Libraries/C and C++
Requires:       libblogger%{sonum} = %{version}

%description	devel
The libaray and the header file for the FIFO interface used to build
the LSB startproc command.

%prep
%setup -q -n showconsole-%version

%build
make %{?_smp_mflags} CC="%__cc" \
    LIBDIR=%{_libdir} \
    INCDIR=%{_includedir} \
    SYSDUNITS=%{_unitdir} \
    BOOT_LOGFILE=%{_localstatedir}/log/boot.log \
    BOOT_OLDLOGFILE=%{_localstatedir}/log/boot.old

%install
%make_install \
    MANPATH=%{_mandir} \
    INSTBINFLAGS="-m 0744" \
    LIBDIR=%{_libdir} \
    INCDIR=%{_includedir} \
    SYSDUNITS=%{_unitdir} \
    BOOT_LOGFILE=%{_localstatedir}/log/boot.log \
    BOOT_OLDLOGFILE=%{_localstatedir}/log/boot.old

%post
%{?regenerate_initrd_post}
test -x /bin/systemctl && /bin/systemctl daemon-reload >/dev/null 2>&1 || :

%postun
test -x /bin/systemctl && /bin/systemctl daemon-reload >/dev/null 2>&1 || :

%post   -n libblogger%{sonum} -p /sbin/ldconfig
%postun -n libblogger%{sonum} -p /sbin/ldconfig

%posttrans
%{?regenerate_initrd_posttrans}

%files
%defattr(-,root,root)
%license COPYING
%doc README
/sbin/blogctl
/sbin/blogd
/sbin/blogger
/sbin/isserial
/sbin/setconsole
/sbin/showconsole
%doc %{_mandir}/man8/blogctl.8.gz
%doc %{_mandir}/man8/blogd.8.gz
%doc %{_mandir}/man8/blogger.8.gz
%doc %{_mandir}/man8/isserial.8.gz
%doc %{_mandir}/man8/setconsole.8.gz
%doc %{_mandir}/man8/showconsole.8.gz

%files -n libblogger%{sonum}
%{_libdir}/libblogger.so.*

%files devel
%defattr(-,root,root)
%{_includedir}/libblogger.h
%{_libdir}/libblogger.so

%files plymouth
%defattr(-,root,root)
%dir %{_prefix}/lib/dracut
%dir %{_prefix}/lib/dracut/modules.d
%dir %{_prefix}/lib/dracut/modules.d/99blog
%dir %{_unitdir}/basic.target.wants
%dir %{_unitdir}/default.target.wants
%dir %{_unitdir}/emergency.target.wants
%dir %{_unitdir}/halt.target.wants
%dir %{_unitdir}/initrd-switch-root.target.wants
%dir %{_unitdir}/kexec.target.wants
%dir %{_unitdir}/multi-user.target.wants
%dir %{_unitdir}/poweroff.target.wants
%dir %{_unitdir}/reboot.target.wants
%dir %{_unitdir}/rescue.target.wants
%dir %{_unitdir}/sysinit.target.wants
%dir %{_unitdir}/systemd-ask-password-blog.service.wants
%{_prefix}/lib/dracut/modules.d/99blog/module-setup.sh
%{_unitdir}/blog-final.service
%{_unitdir}/blog-quit.service
%{_unitdir}/blog-store-messages.service
%{_unitdir}/blog-switch-root.service
%{_unitdir}/blog.service
%{_unitdir}/systemd-ask-password-blog.path
%{_unitdir}/systemd-ask-password-blog.service
%{_unitdir}/blog-umount.service
%{_unitdir}/basic.target.wants/blog.service
%{_unitdir}/default.target.wants/blog-quit.service
%{_unitdir}/emergency.target.wants/blog-quit.service
%{_unitdir}/halt.target.wants/blog-final.service
%{_unitdir}/halt.target.wants/blog-umount.service
%{_unitdir}/initrd-switch-root.target.wants/blog-switch-root.service
%{_unitdir}/initrd-switch-root.target.wants/blog.service
%{_unitdir}/kexec.target.wants/blog-final.service
%{_unitdir}/kexec.target.wants/blog-umount.service
%{_unitdir}/poweroff.target.wants/blog-final.service
%{_unitdir}/poweroff.target.wants/blog-umount.service
%{_unitdir}/reboot.target.wants/blog-final.service
%{_unitdir}/reboot.target.wants/blog-umount.service
%{_unitdir}/rescue.target.wants/blog-quit.service
%{_unitdir}/sysinit.target.wants/blog-store-messages.service
%{_unitdir}/sysinit.target.wants/systemd-ask-password-blog.path

%changelog
* Fri Apr  9 2021 Dr. Werner Fink <werner@suse.de>
- Fix package split done for shared library packaging guideline (bsc#1184479).
* Thu Jan  9 2020 Dr. Werner Fink <werner@suse.de>
- Update to version 2.20
  * Silent some gcc warnings, also avoid common variable (boo#1160385)
  * Include <sys/sysmacros.h> for makedev
  * sort input files (boo#1041090)
  * libconsole: never return empty list from getconsoles()
  * libconsole: Really allow to use /dev/console as a fallback in showconsole
  * libconsole: Add console into the list only when successfully allocated
  * libconsole: Correctly ignore early consoles
- Remove obsolate patch blog-Remove-unused-header.patch
* Fri Aug 30 2019 Bjørn Lie <bjorn.lie@gmail.com>
- Add blog-Remove-unused-header.patch: Fix build with new glibc
  (gh#bitstreamout/showconsole#3).
* Sat Apr 20 2019 Jan Engelhardt <jengelh@inai.de>
- Implement shared library packaging guideline.
* Thu Aug  2 2018 werner@suse.de
- Update to version 2.19 which integrates the patches now removed:
  * sysmacros.patch
  * libconsole-Really-allow-to-use-dev-console-as-a-fall.patch
  * libconsole-never-return-empty-list-from-getconsoles.patch
  * showconsole-2.18.tar.gz
  * libconsole-Add-console-into-the-list-only-when-succe.patch
  * libconsole-Correctly-ignore-early-consoles.patch
  as well as the changes
  * Correct wants directory for systemd-ask-password-blog.service
  * Sort input files for reproducible builds
* Wed Aug  1 2018 schwab@suse.de
- sysmacros.patch: Include <sys/sysmacros.h> for makedev
* Mon Mar 19 2018 kukuk@suse.de
- Use %%license instead of %%doc [bsc#1082318]
* Tue Dec 12 2017 pmladek@suse.com
- hardening of the console list generation (bsc#1071568):
  * libconsole-never-return-empty-list-from-getconsoles.patch
  * libconsole-Really-allow-to-use-dev-console-as-a-fall.patch
  * libconsole-Add-console-into-the-list-only-when-succe.patch
  * libconsole-Correctly-ignore-early-consoles.patch
* Mon Nov  6 2017 werner@suse.de
- Change description of blog-plymouth in same manner as used by
  the release notes
* Thu Apr 27 2017 werner@suse.de
- Add coreutils as required by post scriptlet (boo#1036436)
* Wed Jan 25 2017 werner@suse.de
- Use github source from tagged version
* Wed Jan 25 2017 werner@suse.de
- Use https://github.com/bitstreamout/showconsole as URL
* Thu Aug 11 2016 olaf@aepfle.de
- Install binaries with read permissions (bnc#990837)
* Mon Feb 22 2016 werner@suse.de
- Do not use privata glibc API (boo#967437) but implement
  missing shared memory mkstemp()
- Remove patch remove-bad-symbol-use.patch
* Mon Feb 22 2016 schwab@suse.de
- remove-bad-symbol-use.patch: Remove bad use of internal glibc interface
  (bnc#967437)
* Fri Feb 19 2016 werner@suse.de
- Make clear that blog is split off from sysvinit-tools
- Avoid to be tagged with GLIBC_PRIVATE
- Use libblogger.so with version, that is major and minor
* Fri Feb 19 2016 werner@suse.de
- Bug fix version: Handle chached password request gracefully
* Wed Feb 10 2016 meissner@suse.com
- add blog-rpmlintrc. The all-manual handling of systemd services
  is required according to Werner.
* Thu Feb  4 2016 werner@suse.de
- Let libblogger become a shared library
* Fri Jan 22 2016 werner@suse.de
- Clean up service uits for close and umount
* Fri Jan 15 2016 werner@suse.de
- First initial package after splitting apart from sysvinit
  * Now blogd can replace plymouth(9) even from initrd
  * Also blogd is able to handle password requests from
    from systemd API
  * The blogd daemon writes out console messages even on reboot
    or halt up to the file systems become unavailable.
  * No locking of the console devices, no frame buffer switching.