summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-11-28 10:58:51 +0100
committerAurélien Bompard <aurelien@bompard.org>2013-11-28 10:58:51 +0100
commitc976dc96c79a897b55ca8430b824eb8063cd0403 (patch)
tree0155363d4677407a4990b7d8cb1d83d54bf9c7cd
parent2b41185df80e2351ed3d1c0de38ff9bb42902880 (diff)
downloadhyperkitty-c976dc96c79a897b55ca8430b824eb8063cd0403.tar.gz
hyperkitty-c976dc96c79a897b55ca8430b824eb8063cd0403.tar.xz
hyperkitty-c976dc96c79a897b55ca8430b824eb8063cd0403.zip
SELinux and cron job in the spec file
-rw-r--r--hyperkitty.spec94
1 files changed, 83 insertions, 11 deletions
diff --git a/hyperkitty.spec b/hyperkitty.spec
index ed5fe3a..d934f09 100644
--- a/hyperkitty.spec
+++ b/hyperkitty.spec
@@ -42,6 +42,10 @@ BuildRequires: python-django
BuildRequires: python-django-south
%endif
+# SELinux
+BuildRequires: checkpolicy, selinux-policy-devel, /usr/share/selinux/devel/policyhelp
+BuildRequires: hardlink
+
Requires: django-gravatar2
Requires: django-social-auth >= 0.7.1
Requires: django-rest-framework >= 2.2.0
@@ -64,10 +68,6 @@ Requires: python-django >= 1.4
Requires: python-django-south
%endif
-# Scriptlets
-Requires(post): policycoreutils-python
-Requires(postun): policycoreutils-python
-
%description
HyperKitty is an open source Django application under development. It aims at
@@ -75,6 +75,24 @@ providing a web interface to access GNU Mailman archives.
The code is available from: https://github.com/hyperkitty/hyperkitty .
The documentation can be browsed online at https://hyperkitty.readthedocs.org .
+
+%package selinux
+%global selinux_variants mls targeted
+Summary: SELinux policy module for %{name}
+Requires: %{name} = %{version}-%{release}
+%{!?_selinux_policy_version: %global _selinux_policy_version %(sed -e 's,.*selinux-policy-\\([^/]*\\)/.*,\\1,' /usr/share/selinux/devel/policyhelp 2>/dev/null)}
+%if "%{_selinux_policy_version}" != ""
+Requires: selinux-policy >= %{_selinux_policy_version}
+%endif
+
+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 module for %{name}, install it if you are using SELinux.
+
+
+
%prep
%setup -q -n %{pypi_name}-%{version}%{?prerel:dev} -a 1
# Remove bundled egg-info
@@ -88,6 +106,13 @@ chmod -x hyperkitty_standalone/wsgi.py
# installed (find_package won't find it). It's empty anyway.
rm -f hyperkitty_standalone/__init__.py
+# SELinux
+mkdir SELinux
+echo '%{_localstatedir}/lib/%{name}/sites(/.*)? system_u:object_r:httpd_sys_content_t:s0' \
+ > SELinux/%{name}.fc
+# remember to bump the following version if the policy is updated
+echo "policy_module(%{name}, 1.0)" > SELinux/%{name}.te
+
%build
%{__python} setup.py build
@@ -97,6 +122,15 @@ sphinx-build doc html
# remove the sphinx-build leftovers
rm -rf html/.{doctrees,buildinfo}
+# SELinux
+cd SELinux
+for selinuxvariant in %{selinux_variants}; do
+ make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile
+ mv %{name}.pp %{name}.pp.${selinuxvariant}
+ make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile clean
+done
+cd -
+
%install
%{__python} setup.py install --skip-build --root %{buildroot}
@@ -129,6 +163,22 @@ sed -i -e 's,/path/to/rw,%{_localstatedir}/lib/%{name}/sites/default/db,g' \
%{buildroot}%{_sysconfdir}/%{name}/sites/default/settings.py
touch --reference hyperkitty_standalone/settings.py \
%{buildroot}%{_sysconfdir}/%{name}/sites/default/settings.py
+# Cron job
+mkdir -p %{buildroot}%{_sysconfdir}/cron.daily
+sed -e 's,/path/to/hyperkitty_standalone,%{_sysconfdir}/%{name}/sites/default,g' \
+ hyperkitty_standalone/hyperkitty.cron \
+ > %{buildroot}%{_sysconfdir}/cron.daily/%{name}
+touch --reference hyperkitty_standalone/hyperkitty.cron \
+ %{buildroot}%{_sysconfdir}/cron.daily/%{name}
+
+# SELinux
+for selinuxvariant in %{selinux_variants}; do
+ install -d %{buildroot}%{_datadir}/selinux/${selinuxvariant}
+ install -p -m 644 SELinux/%{name}.pp.${selinuxvariant} \
+ %{buildroot}%{_datadir}/selinux/${selinuxvariant}/%{name}.pp
+done
+/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+
%check
@@ -143,21 +193,33 @@ rm -f hyperkitty_standalone/__init__.py
collectstatic --noinput >/dev/null || :
%{__python} %{_sysconfdir}/%{name}/sites/default/manage.py \
assets build --parse-templates &>/dev/null || :
-semanage fcontext -a -t httpd_sys_content_t "%{_localstatedir}/lib/%{name}/sites(/.*)?" 2>/dev/null || :
-restorecon -R %{_localstatedir}/lib/%{name}/sites || :
-%postun
-if [ $1 -eq 0 ] ; then # final removal
-semanage fcontext -d -t httpd_sys_content_t "%{_localstatedir}/lib/%{name}/sites(/.*)?" 2>/dev/null || :
-fi
+%post selinux
+for selinuxvariant in %{selinux_variants}; do
+ /usr/sbin/semodule -s ${selinuxvariant} -i \
+ %{_datadir}/selinux/${selinuxvariant}/%{name}.pp &> /dev/null || :
+done
+/sbin/fixfiles -R %{name} restore || :
+/sbin/restorecon -R %{_localstatedir}/lib/%{name} || :
+
+%postun selinux
+if [ $1 -eq 0 ] ; then
+ for selinuxvariant in %{selinux_variants}; do
+ /usr/sbin/semodule -s ${selinuxvariant} -r %{name} &> /dev/null || :
+ done
+ /sbin/fixfiles -R %{name} restore || :
+ [ -d %{_localstatedir}/lib/%{name} ] && \
+ /sbin/restorecon -R %{_localstatedir}/lib/%{name} &> /dev/null || :
+fi
%files
%doc html README.rst COPYING.txt
%config(noreplace) %{_sysconfdir}/%{name}
%config(noreplace) %attr(640,root,apache) %{_sysconfdir}/%{name}/sites/default/settings.py
-%config(noreplace) %{_sysconfdir}/httpd/conf.d/hyperkitty.conf
+%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf
+%config(noreplace) %{_sysconfdir}/cron.daily/%{name}
%{python_sitelib}/%{name}
%{python_sitelib}/%{pypi_name}-%{version}%{?prerel:dev}-py?.?.egg-info
%dir %{_localstatedir}/lib/%{name}
@@ -166,8 +228,18 @@ fi
%dir %{_localstatedir}/lib/%{name}/sites/default/static
%attr(755,apache,apache) %{_localstatedir}/lib/%{name}/sites/default/db
+%files selinux
+%defattr(-,root,root,0755)
+%doc SELinux/*
+%{_datadir}/selinux/*/%{name}.pp
+
%changelog
+* Mon Nov 25 2013 Aurelien Bompard <abompard@fedoraproject.org> - 0.1.7-0.1
+- add SELinux policy module, according to:
+ http://fedoraproject.org/wiki/SELinux_Policy_Modules_Packaging_Draft
+- add a cron job to refresh KittyStore's cache
+
* Thu Aug 15 2013 Aurelien Bompard <abompard@fedoraproject.org> - 0.1.7-0.1
- don't remove the static files cache on uninstall (it may have local
modifications)