[PATCH 2/2] removing rc.local manipulation from rpm spec file and replacing it with systemd/sysv scripts

Dan Radez dradez at redhat.com
Tue Feb 7 03:42:11 UTC 2012


---
 agent/Makefile                    |    4 +-
 agent/aeolus-audrey-agent.spec.in |   69 ++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 21 deletions(-)

diff --git a/agent/Makefile b/agent/Makefile
index 86d12fb..5a96004 100644
--- a/agent/Makefile
+++ b/agent/Makefile
@@ -51,7 +51,7 @@ dist: src/audrey/agent.py audrey.$(man_section)
 		aeolus-audrey-agent.spec.in > aeolus-audrey-agent.spec
 	cp -ar aeolus-audrey-agent.spec.in aeolus-audrey-agent.spec \
 		COPYING Makefile src bin audrey.$(man_section) \
-		test_audrey_agent.py dist/aeolus-audrey-agent-$(VERSION)
+		test_audrey_agent.py scripts dist/aeolus-audrey-agent-$(VERSION)
 	tar -C dist -zcvf aeolus-audrey-agent-$(VERSION).tar.gz aeolus-audrey-agent-$(VERSION)
 
 # cp src/audrey/agent.py.in to src/audrey/agent.py
@@ -62,7 +62,7 @@ src/audrey/agent.py: src/audrey/agent.py.in
 # from the Audrey agent.
 #    Run the audrey target before generating the man page.
 audrey.$(man_section): bin/audrey
-	PYTHONPATH=$(PYTHONPATH):src ./$< --help
+	PYTHONPATH=$(PYTHONPATH):src ./$< --help > /dev/null
 	PYTHONPATH=$(PYTHONPATH):src help2man --name='Aeolus agent' \
         --section $(man_section) --no-info ./$< > $@
 
diff --git a/agent/aeolus-audrey-agent.spec.in b/agent/aeolus-audrey-agent.spec.in
index 182af8b..818af4a 100644
--- a/agent/aeolus-audrey-agent.spec.in
+++ b/agent/aeolus-audrey-agent.spec.in
@@ -13,6 +13,12 @@
 #   See the License for the specific language governing permissions and
 #  limitations under the License.
 #
+
+%if 0%{?rhel} == 5
+# sitelib for noarch packages
+%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+%endif
+
 Name:       aeolus-audrey-agent
 Version:    @VERSION@
 Release:    @RELEASE@
@@ -27,15 +33,13 @@ Source0:    https://github.com/aeolusproject/audrey/tarball/master/aeolus-audrey
 # process "audrey --help" is executed to generate the man page.
 BuildRequires: help2man
 BuildRequires: facter python-httplib2 python-oauth2
-%if (0%{?fedora} <= 14 || 0%{?rhel} <= 6)
-BuildRequires: python-argparse
-BuildRequires: python-setuptools
-%endif
-
 Requires:   facter python-httplib2 python-oauth2
 Requires:   python-argparse
-%if (0%{?fedora} <= 14 || 0%{?rhel} <= 6)
+
+%if 0%{?rhel} == 5
 BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+BuildRequires: python-argparse
+BuildRequires: python-setuptools
 Requires:   python-argparse
 Requires:   python-setuptools
 %endif
@@ -55,33 +59,60 @@ make %{?_smp_mflags}
 
 %install
 rm -rf %{buildroot}
-mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
-mkdir -p %{buildroot}%{python_sitelib}
+
+# copy over the audrey agent bits
+mkdir -p %{buildroot}%{python_sitelib}/audrey/csclient
 mkdir -p %{buildroot}%{_bindir}
+install -m644 src/audrey/*py* %{buildroot}%{python_sitelib}/audrey
+install -m644 src/audrey/csclient/* %{buildroot}%{python_sitelib}/audrey/csclient
+install -m755 bin/audrey %{buildroot}%{_bindir}/audrey
+
+#install man files
 mkdir -p %{buildroot}%{_mandir}/man8
+install -m644 audrey.8 %{buildroot}%{_mandir}/man8
 
-# copy over the audrey agent bits
-cp -r src/audrey %{buildroot}%{python_sitelib}
-install bin/audrey %{buildroot}%{_bindir}/audrey
-cp audrey.8 %{buildroot}%{_mandir}/man8
+# create the cloud-info file for the subpackages
+mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
 touch %{buildroot}%{_sysconfdir}/sysconfig/cloud-info
 
+if [ 0%{?rhel} == 05 ]; then
+  # install the sysv service script
+  mkdir -p $RPM_BUILD_ROOT/%{_initrddir}/%{name}
+  install -Dp -m755 scripts/audrey.sysv %{buildroot}%{_initrddir}/audrey
+else
+  # install the systemd unit file
+  mkdir -p $RPM_BUILD_ROOT/%{_unitdir}/
+  install -m644 scripts/audrey.service $RPM_BUILD_ROOT/%{_unitdir}/
+fi
+
 %post
-if ! grep -q audrey %{_sysconfdir}/rc.d/rc.local; then
-    # install rc.local invocation
-    echo '# This conditionally runs Audrey if it exists' >> %{_sysconfdir}/rc.d/rc.local
-    echo '[ -f /usr/bin/audrey ] && /usr/bin/audrey' >> %{_sysconfdir}/rc.d/rc.local
+if [ 0%{?rhel} == 05 ]; then
+/sbin/chkconfig --add audrey
+/sbin/chkconfig audrey on
+else
+/bin/systemctl enable audrey.service > /dev/null
 fi
 
-%postun
-# remove the audrey calls from rc.local
-sed -i "/[Aa]udrey/d" /etc/rc.d/rc.local
+
+%preun
+if [ "$1" = 0 ] ; then
+if [ 0%{?rhel} == 05 ]; then
+/sbin/chkconfig --del audrey
+else
+/bin/systemctl disable audrey.service > /dev/null
+fi
+fi
 
 %files
 %defattr(-,root,root,-)
 %{_bindir}/audrey
 %{python_sitelib}/audrey/*
 %{_mandir}/man8/audrey.8*
+%if 0%{?rhel} == 5
+%{_initrddir}/audrey
+%else
+%{_unitdir}/audrey.service
+%endif
 %doc COPYING
 
 ###
-- 
1.7.7.6




More information about the aeolus-devel mailing list