%global selinux_types %(%{__awk} '/^#[[:space:]]*SELINUXTYPE=/,/^[^#]/ { if ($3 == "-") printf "%s ", $2 }' /etc/selinux/config 2>/dev/null) %global selinux_variants %([ -z "%{selinux_types}" ] && echo mls strict targeted || echo %{selinux_types}) Name: rpmt-py Version: 1.0.8 Release: 1%{?dist} Summary: A Transactional RPM (Python version) Group: Applications/System License: EU Datagrid URL: http://www.quattor.org # The source for this package was pulled from upstream's vcs. Note that # this refers to tagged version thus no need for dates in version. Use # the following commands to generate the tarball: # svn export http://quattor.svn.sourceforge.net/svnroot/quattor/tags/rpmt-py/1.0.8/ rpmt-py-1.0.8 # tar -zcvf rpmt-py-1.0.8.tar.gz rpmt-py-1.0.8 Source0: %{name}-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildArch: noarch BuildRequires: checkpolicy, selinux-policy-devel, /usr/share/selinux/devel/policyhelp Requires: rpm-python %description rpmt-py is a tool to install, upgrade and erase RPM packages in one transaction, thus allow package sets with complex dependencies to be processed at once while keeping the system in a consistent state. There was a need for such a program, because the classic front-end to the RPM package manager (rpm) only allows one type of such action in a transaction. rpmt-py is part of the Quattor administration toolkit, see http://quattor.org for more information about rpmt-py and Quattor. rpmt-py is inspired on RedHat's rpm and based on rpm-python binding library (itself based on rpmlib). %package selinux Summary: SELinux policy for rpmt-py Group: Applications/System Requires(post): /usr/sbin/semodule, /sbin/restorecon, %{name} = %{version} Requires(postun): /usr/sbin/semodule, %{name} = %{version} %description selinux SELinux policy for rpmt-py. %prep %setup -q %build %if 0%{?rhel} <= 5 %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %endif make man sed -i "s#sys.path.append('/usr/lib/python/rpmt')#sys.path.append(os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages','rpmt-py']))#g" %{name} 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 - # Remove .cin templates find . -name "*.cin" -delete # Remove empty files find . -size 0 -delete %install rm -rf %{buildroot} # make install uses hardcoded paths that tend to be wrong # make install install -d %{buildroot}%{_bindir} install -d %{buildroot}%{python_sitelib}/%{name} install -d %{buildroot}%{_mandir}/man8/ install -d %{buildroot}%{_localstatedir}/cache/rpmt install -m 0755 %{name} %{buildroot}%{_bindir}/%{name} for i in rpmt_ActionsSet.py rpmt_OptionParser.py rpmt_Transaction.py generic_OptionParser.py do sed -i "/^\#\!\/usr\/bin\/python/d" $i install -m 0644 $i %{buildroot}%{python_sitelib}/%{name}/$i done install -m 0644 %{name}.8.gz %{buildroot}%{_mandir}/man8/%{name}.8.gz 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 chmod 0644 ChangeLog README %post selinux for selinuxvariant in %{selinux_variants} do /usr/sbin/semodule -s ${selinuxvariant} -i \ %{_datadir}/selinux/${selinuxvariant}/%{name}.pp &> /dev/null || : done [ -x %{_bindir}/%{name} ] && \ /sbin/restorecon %{_bindir}/%{name} %postun selinux if [ $1 -eq 0 ] ; then for selinuxvariant in %{selinux_variants} do /usr/sbin/semodule -s ${selinuxvariant} -r rpmtpy &> /dev/null || : done fi %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %{_bindir}/rpmt-py %{python_sitelib}/%{name} %{_mandir}/man8/* %{_localstatedir}/cache/rpmt %doc ChangeLog README %files selinux %defattr(-,root,root,0755) %doc selinux/* %{_datadir}/selinux/*/%{name}.pp %changelog * Tue Apr 17 2012 Christos Triantafyllidis 1.0.8-1 - initial package creation