[openstack-marconi: 4/5] Use dist config override and other cleanups

Jon Bernard jbernard at fedoraproject.org
Wed Apr 30 18:31:15 UTC 2014


commit 3a3951de6a16b8fd5cea0a4184d49dcf49760b91
Author: Jon Bernard <jbernard at tuxion.com>
Date:   Wed Apr 30 14:29:27 2014 -0400

    Use dist config override and other cleanups

 openstack-marconi.spec |  105 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 71 insertions(+), 34 deletions(-)
---
diff --git a/openstack-marconi.spec b/openstack-marconi.spec
index d3bf092..1732d77 100644
--- a/openstack-marconi.spec
+++ b/openstack-marconi.spec
@@ -1,14 +1,19 @@
-Name:             openstack-marconi
+%define project marconi
+
+Name:             openstack-%{project}
 Version:          2014.1
 Release:          1%{?dist}.1
-Summary:          OpenStack Message Queuing Service
+Summary:          OpenStack Message Queuing Service (%{project})
 
 Group:            Applications/System
 License:          ASL 2.0
 URL:              https://wiki.openstack.org/wiki/Marconi
-Source0:          https://launchpad.net/marconi/icehouse/%{version}/+download/marconi-%{version}.tar.gz
-Source1:          openstack-marconi.service
-Source2:          openstack-marconi.logrotate
+Source0:          https://launchpad.net/%{project}/icehouse/%{version}/+download/%{project}-%{version}.tar.gz
+
+Source1:          %{project}-dist.conf
+
+Source10:         %{name}.service
+Source11:         %{name}.logrotate
 
 #
 # patches_base=2014.1
@@ -52,42 +57,65 @@ portfolio, supporting point-to-point, producer-consumer, publisher-subscriber
 models.  Marconi is designed to perform and scale in a multi-tenant environment.
 
 %prep
-%setup -q -n marconi-%{version}
+%setup -q -n %{project}-%{version}
 
 %patch0001 -p1
 
-sed -i s/REDHATMARCONIVERSION/%{version}/ marconi/version.py
-sed -i s/REDHATMARCONIRELEASE/%{release}/ marconi/version.py
+sed -i 's/REDHATVERSION/%{version}/; s/REDHATRELEASE/%{release}/' %{project}/version.py
 
+# Remove the requirements file so that pbr hooks don't add it
+# to distutils requires_dist config
 rm -rf {test-,}requirements.txt
 
 %build
 %{__python2} setup.py build
 
-# set default driver to sqlite
-openstack-config --set etc/marconi.conf.sample drivers storage sqlite
+# Programmatically update defaults in sample configs
+
+#  First we ensure all values are commented in appropriate format.
+#  Since icehouse, there was an uncommented keystone_authtoken section
+#  at the end of the file which mimics but also conflicted with our
+#  distro editing that had been done for many releases.
+sed -i '/^[^#[]/{s/^/#/; s/ //g}; /^#[^ ]/s/ = /=/' etc/%{project}.conf.sample etc/logging.conf.sample
+
+#  TODO: Make this more robust
+#  Note it only edits the first occurance, so assumes a section ordering in sample
+#  and also doesn't support multi-valued variables like dhcpbridge_flagfile.
+while read name eq value; do
+  test "$name" && test "$value" || continue
+  sed -i "0,/^# *$name=/{s!^# *$name=.*!#$name=$value!}" etc/%{project}.conf.sample
+done < %{SOURCE1}
 
 %install
 %{__python2} setup.py install -O1 --skip-build --root %{buildroot}
 
-# config files
-install -p -D -m 640 etc/marconi.conf.sample %{buildroot}%{_sysconfdir}/marconi/marconi.conf
-install -p -D -m 640 etc/logging.conf.sample %{buildroot}%{_sysconfdir}/marconi/logging.conf
+# Setup directories
+install -d -m 755 %{buildroot}%{_unitdir}
+install -d -m 755 %{buildroot}%{_datadir}/%{project}
+install -d -m 755 %{buildroot}%{_sharedstatedir}/%{project}
+install -d -m 755 %{buildroot}%{_localstatedir}/log/%{project}
+
+# Install config files
+install -p -D -m 644 %{SOURCE1} %{buildroot}%{_datadir}/%{project}/%{project}-dist.conf
+install -d -m 755 %{buildroot}%{_sysconfdir}/%{project}
 
-# initscripts
-install -p -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/openstack-marconi.service
+install -p -D -m 640 etc/%{project}.conf.sample %{buildroot}%{_sysconfdir}/%{project}/%{project}.conf
+install -p -D -m 640 etc/logging.conf.sample    %{buildroot}%{_sysconfdir}/%{project}/logging.conf
 
-# log directory
-install -d -m 755 %{buildroot}%{_localstatedir}/log/marconi
+# Install logrotate
+install -p -D -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
 
-# log ratation
-install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-marconi
+# Install initscripts
+install -p -m 644 %{SOURCE10} %{buildroot}%{_unitdir}
 
 %pre
-getent group marconi >/dev/null || groupadd -r marconi
-getent passwd marconi >/dev/null || \
-    useradd -r -g marconi -d %{_sharedstatedir}/marconi -s /sbin/nologin \
-    -c "OpenStack Marconi Daemon" marconi
+USERNAME=%{project}
+GROUPNAME=$USERNAME
+HOMEDIR=%{_sharedstatedir}/$USERNAME
+getent group $GROUPNAME >/dev/null || groupadd -r $GROUPNAME
+getent passwd $USERNAME >/dev/null || \
+  useradd -r -g $GROUPNAME -G $GROUPNAME -d $HOMEDIR -s /sbin/nologin \
+    -c "OpenStack Marconi Daemon" $USERNAME
 exit 0
 
 %post
@@ -100,17 +128,26 @@ exit 0
 %systemd_postun_with_restart openstack-marconi.service
 
 %files
-%doc README.rst
-%{_bindir}/marconi-server
-%{python2_sitelib}/marconi
-%{python2_sitelib}/marconi-%{version}*.egg-info
-%{_unitdir}/openstack-marconi.service
-
-%dir %{_sysconfdir}/marconi
-%config(noreplace) %attr(-, root, marconi) %{_sysconfdir}/marconi/marconi.conf
-%config(noreplace) %attr(-, root, marconi) %{_sysconfdir}/marconi/logging.conf
-%config(noreplace) %attr(-, root, marconi) %{_sysconfdir}/logrotate.d/openstack-marconi
-%dir %attr(0750, marconi, marconi) %{_localstatedir}/log/marconi
+%doc LICENSE README.rst
+
+%dir %{_sysconfdir}/%{project}
+%config(noreplace) %attr(0640, root, %{project}) %{_sysconfdir}/%{project}/%{project}.conf
+%config(noreplace) %attr(0640, root, %{project}) %{_sysconfdir}/%{project}/logging.conf
+%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
+
+%dir %attr(0755, %{project}, root) %{_localstatedir}/log/%{project}
+
+%{_bindir}/%{project}-server
+
+%{_datarootdir}/%{project}
+
+%defattr(-, %{project}, %{project}, -)
+%dir %{_sharedstatedir}/%{project}
+
+%defattr(-,root,root,-)
+%{_unitdir}/%{name}.service
+%{python_sitelib}/%{project}
+%{python_sitelib}/%{project}-%{version}*.egg-info
 
 %changelog
 * Tue Apr 22 2014 Jon Bernard <jobernar at redhat.com> - 2014.1-1.1


More information about the scm-commits mailing list