Blob Blame History Raw
# Only Fedora & RHEL 5+ can use selinux
%if 0%{?rhel} && "%rhel" < "5"
%define without_selinux 1
%endif

%define selinux_variants mls strict targeted

Name:           queuegraph
Version:        1.1
Release:        2%{?dist}
Summary:        A RRDtool frontend for Mail statistics

Group:          System Environment/Daemons
License:        GPL

URL:            http://www.arschkrebs.de/postfix/queuegraph/
Source0:        http://www.arschkrebs.de/postfix/queuegraph/queuegraph.tar.gz
Source1:        queuegraph.conf
Source2:        queuegraph.cron
Source3:        queuegraph.te
Source4:        queuegraph.fc
Source5:        queuegraph.if
Patch0:         queuegraph-paths.patch
Patch1:         queuegraph-average.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

%if ! 0%{?without_selinux}
BuildRequires:  checkpolicy, selinux-policy-devel, hardlink
%endif

Requires:       rrdtool, httpd, vixie-cron
Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))

BuildArch:      noarch

%description
Queuegraph is a very simple mail statistics RRDtool frontend for Postfix that
produces daily, weekly, monthly and yearly graphs of Postfix's active,
deferred, incoming and bounce queues.

%if ! 0%{?without_selinux}
%package selinux
Summary:        A RRDtool frontend for Mail statistics

Group:          System Environment/Daemons
%define selinux_policyver %(sed -e 's,.*selinux-policy-\\([^/]*\\)/.*,\\1,' /usr/share/selinux/devel/policyhelp) 
%if "%{selinux_policyver}" != ""
Requires:       selinux-policy >= %{selinux_policyver}
%endif
Requires:       %{name} = %{version}-%{release}

Requires(post):   /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles, %{name}
Requires(postun): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles, %{name}

%description selinux
This is the selinux policy for queuegraph.
%endif

%prep
%setup -q -n %{name}
%patch0 -p1 -b .paths
%patch1 -p1 -b .average

%if ! 0%{?without_selinux}
mkdir selinux
cp -p %{SOURCE3} %{SOURCE4} %{SOURCE5} ./selinux/
%endif

%build
%if ! 0%{?without_selinux}
cd selinux
for selinuxvariant in %{selinux_variants}; do
  make NAME=${selinuxvariant} -f %{_datadir}/selinux/devel/Makefile
  mv %{name}.pp %{name}.pp.${selinuxvariant}
  make NAME=${selinuxvariant} -f %{_datadir}/selinux/devel/Makefile clean
done
cd -
%endif

%install
rm -rf $RPM_BUILD_ROOT
%{__install} -d -m 0755 $RPM_BUILD_ROOT/%{_sbindir}
%{__install} -d -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d
%{__install} -d -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d
%{__install} -d -m 0755 $RPM_BUILD_ROOT/%{_datadir}/queuegraph
%{__install} -d -m 0755 $RPM_BUILD_ROOT/%{_localstatedir}/lib/queuegraph
%{__install} -d -m 0775 $RPM_BUILD_ROOT/%{_localstatedir}/cache/queuegraph

%{__install} -p -m 0755 queuegraph.cgi $RPM_BUILD_ROOT/%{_datadir}/queuegraph/queuegraph.cgi
%{__install} -p -m 0755 queuegraph-rrd.sh $RPM_BUILD_ROOT/%{_sbindir}/
%{__install} -p -m 0644 %SOURCE1 $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d/
%{__install} -p -m 0644 %SOURCE2 $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/queuegraph

%if ! 0%{?without_selinux}
cd selinux
for selinuxvariant in %{selinux_variants}; do
  install -d $RPM_BUILD_ROOT/%{_datadir}/selinux/${selinuxvariant}
  install -p -m 644 %{name}.pp.${selinuxvariant} \
    $RPM_BUILD_ROOT/%{_datadir}/selinux/${selinuxvariant}/%{name}.pp
done
cd -

# Hardlink identical policy module packages together
/usr/sbin/hardlink -cv $RPM_BUILD_ROOT/%{_datadir}/selinux
%endif


%clean
rm -rf $RPM_BUILD_ROOT

%if ! 0%{?without_selinux}
%post selinux
for selinuxvariant in %{selinux_variants}; do
  /usr/sbin/semodule -s ${selinuxvariant} -i \
    %{_datadir}/selinux/${selinuxvariant}/%{name}.pp &> /dev/null || :
done

# Fix up non-standard file contexts
/sbin/fixfiles -R %{name} restore || :
/sbin/restorecon -R %{_localstatedir}/cache/%{name} || :

%postun selinux
# Clean up after package removal
if [ $1 -eq 0 ]; then
  # Remove SELinux policy modules
  for selinuxvariant in %{selinux_variants}
  do
    /usr/sbin/semodule -s ${selinuxvariant} -r %{name} &> /dev/null || :
  done

  /sbin/fixfiles -R %{name} restore || :

  # Clean up any remaining file contexts (shouldn't be any really)
  [ -d %{_localstatedir}/cache/%{name} ] && \
    /sbin/restorecon -R %{_localstatedir}/cache/%{name} &> /dev/null || :
fi
%endif

%files
%defattr(-,root,root,-)
%doc README
%dir %{_localstatedir}/lib/queuegraph
%dir %attr(0775,root,apache) %{_localstatedir}/cache/queuegraph
%config(noreplace) %{_sysconfdir}/httpd/conf.d/queuegraph.conf
%config(noreplace) %{_sysconfdir}/cron.d/queuegraph
%{_sbindir}/*
%{_datadir}/queuegraph

%if ! 0%{?without_selinux}
%files selinux
%defattr(-,root,root,-)
%{_datadir}/selinux/*/%{name}.pp
%doc selinux/*
%endif

%changelog
* Tue Oct 30 2007 Bernard Johnson <bjohnson@symetrix.com> - 1.1-2
- new tarball - no version numbers updated
- fixed up patches to match new tarball
- removed repotag
- Queuegraph needs AddHandler cgi-script .cgi (bz #289031)
- queuegraph is denied by selinux (bz #247435)

* Sun Mar 25 2007 Bernard Johnson <bjohnson@symetrix.com> - 1.1-1
- initial release