File lcd-daemon.spec of Package lcd-daemon

%if %{defined _project}
# define if building on openSUSE build service
%global build_on_obs       1
%global reconfigure_mode   0
%else
%define _project           local
%global build_on_obs       0
%global reconfigure_mode   0
%global _hardened_build    1
%endif

%if %{defined nodebug}
%global debug_package      %{nil}
%endif
%global _prefix            /usr
%global mandir             /usr/share/man
%global _libexecdir        /usr/libexec

%if %build_on_obs == 1
%global packager           Manvendra Bhangui <Manvendra Bhangui <lcd-daemon@indimail.org>>
%endif

%define see_base           For a description of lcd-daemon visit https://github.com/mbhangui/lcd-daemon

%define servicedir /service
Name: lcd-daemon
Version: 1.0
Release: 1.1%{?dist}
Summary: LCD Daemon for Character LCD with Hitachi 44780 controller
License: LGPLv3+
Group: Applications/Multimedia
URL: https://github.com/mbhangui/lcd-daemon
BuildRequires: gcc gcc-c++ make autoconf automake libtool
BuildRequires: glibc glibc-devel libqmail-devel
# only for raspberry pi distributions
# TODO: need to find a variable name instead of raspberry_version
%if 0%{?raspbian_version}
BuildRequires: libwiringpi-devel libwiringpidev-devel
%endif
Source0: %{name}-%{version}.tar.gz
Requires: coreutils

%description
lcd-daemon is server application that accepts text from clients  to be
printed on character LCD Display with Hitachi 44780 controller. It uses the
libwiringPi and libwiringPiDev library at
https://github.com/mbhangui/wiringPi

notify-daemon is server application that accepts text from clients to be
sent as desktop notifications

The libraries were originally written by Gordon Henderson. The version of
libwiringpi used here is an unofficial fork of wiringPi at
https://github.com/WiringPi/WiringPi.

%{see_base}

%prep
%setup -q

%build
./configure --prefix=%{_prefix} --sbindir=%{_prefix}/sbin --mandir=%{_prefix}/share/man --libexecdir=%{_prefix}/libexec

%install
%{__make} -s %{?_smp_mflags}
%{__make} -s DESTDIR=%{buildroot} install-strip
find %{buildroot}%{_mandir} -type f -exec gzip -q {} \;

%files
%defattr (-,root,root)
%doc LICENSE README.md
%dir %attr(755,root,root) %{_libexecdir}/%{name}
%{_prefix}/sbin/lcd-daemon
%{_prefix}/sbin/notify-daemon
%{_bindir}/pilcd
%{_bindir}/pinotify
%{_libexecdir}/%{name}/create_service
%ghost /var/log/svc/lcd-daemon

%docdir %{_mandir}
%{_mandir}/man1/pilcd.1.gz
%{_mandir}/man1/pinotify.1.gz
%{_mandir}/man8/lcd-daemon.8.gz
%{_mandir}/man8/notify-daemon.8.gz

%pretrans
if [ ! -x %{_prefix}/sbin/minisvc ] ; then
  exit 0
fi
# stop lcd-daemon services before upgrade
if [ -d /run ] ; then
  rundir=/run/svscan
elif [ -d /var/run ] ; then
  rundir=/var/run/svscan
else
  rundir=%{servicedir}
fi
%{_prefix}/bin/svstat %{servicedir}/lcd-daemon >/dev/null 2>&1
if [ $? -eq 0 ] ; then
  %{__mkdir_p} ${rundir}/lcd-daemon
  %{_prefix}/bin/svc -d %{servicedir}/lcd-daemon
  touch ${rundir}/lcd-daemon/.down
fi

%post
argv1=$1
if [ $argv1 -eq 2 ] ; then # upgrade
  if [ ! -x %{_prefix}/sbin/minisvc ] ; then
    exit 0
  fi
  if [ -d /run ] ; then
    rundir=/run/svscan
  elif [ -d /var/run ] ; then
    rundir=/var/run/svscan
  else
    rundir=%{servicedir}
  fi
  for j in lcd-daemon notify-desktop
  do
    %{_prefix}/sbin/minisvc --servicedir=%{servicedir} --refreshsvc="%{servicedir}/$j" --silent
    %{_prefix}/bin/svok %{servicedir}/$j >/dev/null 2>&1
    if [ $? -eq 0 -a -f ${rundir}/$j/.down ] ; then
      %{_prefix}/bin/svc -u %{servicedir}/$j
    fi
    %{__rm} -f ${rundir}/$j/.down
  done
  exit 0
fi

if [ ! -x %{_prefix}/sbin/minisvc ] ; then
  exit 0
fi
for j in lcd-daemon notify-desktop
do
  # create lcd-daemon, notify-desktop service in down state
  %{_libexecdir}/%{name}/create_service --servicedir=%{servicedir} --"$j"
  %{_prefix}/sbin/minisvc --servicedir=%{servicedir} --service-name="$j" \
    --export-variables=%{servicedir}/"$j"/variables/.variables --force --silent
  touch %{servicedir}/"$j"/down
  if [ -x /usr/bin/svps ] ; then
    /usr/bin/svps -h >/dev/null 2>&1
  fi
done

%preun
if [ ! -x %{_prefix}/sbin/minisvc ] ; then
  exit 0
fi
if [ -x %{_prefix}/sbin/minisvc ] ; then
  %{_prefix}/sbin/minisvc --rmsvc=%{servicedir}/lcd-daemon
  %{_prefix}/sbin/minisvc --rmsvc=%{servicedir}/notify-desktop
  sleep 5
fi

%changelog
* Mon May 19 2025 06:23:19 +0000 Manvendra Bhangui <lcd-daemon@indimail.org> 1.0-1.1%{?dist}
1.  Added pilcd command, lcd-daemon server
- Created lcd daemon package
- First public release
- Specifying bits, cols, rows moved to lcd-daemon from pilcd
- lcd-daemon.c: Added startup, shutdown message
- configure.ac: corrected bugreport address
- lcd-daemon.c, pilcd.c, lcdPrint.c: interchanged rownum and scroll fields
- lcd-daemon.c: prevent row number to be greater than rows supported by LCD
- added notify-daemon.c, pinotify.c
- Added -T argument, DISPLAY_TIMEOUT env variable for the time in seconds
  notify-send will display message.
- Fix gcc14 errors for lcd-daemon.c, notify-daemon.c, pilcd.c, pinotify.c,
  substdio.h
- lcd-daemon.c, notify-daemon.c: Fixed argument type for get_octal()
openSUSE Build Service is sponsored by