[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