summaryrefslogtreecommitdiffstats
path: root/redhat/bcfg2.spec
diff options
context:
space:
mode:
Diffstat (limited to 'redhat/bcfg2.spec')
-rw-r--r--redhat/bcfg2.spec257
1 files changed, 257 insertions, 0 deletions
diff --git a/redhat/bcfg2.spec b/redhat/bcfg2.spec
new file mode 100644
index 000000000..d2ab7be2a
--- /dev/null
+++ b/redhat/bcfg2.spec
@@ -0,0 +1,257 @@
+Name: %{_package}
+Version: %{_version}
+Release: %{_release}
+
+%define __python python
+%{!?py_ver: %define py_ver %(python -c 'import sys;print(sys.version[0:3])')}
+%define pythonversion %{py_ver}
+%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+%{!?_initrddir: %define _initrddir %{_sysconfdir}/rc.d/init.d}
+
+# Most rpm-based distributions include the lxml package a 'python-lxml',
+# but some distributions and some people who roll their own lxml packages
+# call it just 'lxml'. We'll try to catch both.
+%define dfl_lxml python-lxml
+%define alt_lxml lxml
+%define lxmldep %(rpm -q %{alt_lxml} 2>&1 > /dev/null && echo %{alt_lxml} || echo %{dfl_lxml})
+
+Summary: Configuration management system
+Group: Applications/System
+License: BSD
+URL: http://trac.mcs.anl.gov/projects/bcfg2
+Source0: %{name}-%{version}-%{release}.tar.gz
+BuildRoot: %{_builddir}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildArch: noarch
+
+%if 0%{?fedora} >= 8
+BuildRequires: python-setuptools-devel
+%else
+BuildRequires: python-setuptools
+%endif
+
+Requires: %{lxmldep} >= 0.9
+Requires(post): /sbin/chkconfig
+Requires(preun): /sbin/chkconfig
+Requires(preun): /sbin/service
+Requires(postun): /sbin/service
+
+
+%description
+Bcfg2 helps system administrators produce a consistent, reproducible,
+and verifiable description of their environment, and offers
+visualization and reporting tools to aid in day-to-day administrative
+tasks. It is the fifth generation of configuration management tools
+developed in the Mathematics and Computer Science Division of Argonne
+National Laboratory.
+
+It is based on an operational model in which the specification can be
+used to validate and optionally change the state of clients, but in a
+feature unique to bcfg2 the client's response to the specification can
+also be used to assess the completeness of the specification. Using
+this feature, bcfg2 provides an objective measure of how good a job an
+administrator has done in specifying the configuration of client
+systems. Bcfg2 is therefore built to help administrators construct an
+accurate, comprehensive specification.
+
+Bcfg2 has been designed from the ground up to support gentle
+reconciliation between the specification and current client states. It
+is designed to gracefully cope with manual system modifications.
+
+Finally, due to the rapid pace of updates on modern networks, client
+systems are constantly changing; if required in your environment,
+Bcfg2 can enable the construction of complex change management and
+deployment strategies.
+
+%package server
+Summary: Configuration management server
+Group: System Environment/Daemons
+Requires: bcfg2 = %{version}-%{release}
+Requires: /usr/sbin/sendmail
+Requires: /usr/bin/openssl
+Requires: gamin-python
+Requires: redhat-lsb
+Requires: python-genshi
+Requires: python-cheetah
+Requires(post): /sbin/chkconfig
+Requires(preun): /sbin/chkconfig
+Requires(preun): /sbin/service
+Requires(postun): /sbin/service
+
+%description server
+Configuration management server
+
+%prep
+%setup -q -n %{name}-%{version}-%{release}
+
+# fixup some paths
+%{__perl} -pi -e 's@/etc/default@%{_sysconfdir}/sysconfig@g' debian/buildsys/common/bcfg2.init
+%{__perl} -pi -e 's@/etc/default@%{_sysconfdir}/sysconfig@g' tools/bcfg2-cron
+
+%{__perl} -pi -e 's@/usr/lib/bcfg2@%{_libexecdir}@g' debian/bcfg2.cron.daily
+%{__perl} -pi -e 's@/usr/lib/bcfg2@%{_libexecdir}@g' debian/bcfg2.cron.hourly
+
+# don't start servers by default
+%{__perl} -pi -e 's@chkconfig: (\d+)@chkconfig: -@' debian/buildsys/common/bcfg2.init
+%{__perl} -pi -e 's@chkconfig: (\d+)@chkconfig: -@' debian/buildsys/common/bcfg2-server.init
+
+# get rid of extraneous shebangs
+for f in `find src/lib -name \*.py`
+do
+ %{__sed} -i -e '/^#!/,1d' $f
+done
+
+%build
+%{__python} -c 'import setuptools; execfile("setup.py")' build
+
+
+%install
+rm -rf %{buildroot}
+%{__python} -c 'import setuptools; execfile("setup.py")' install --skip-build --root %{buildroot}
+
+mkdir -p %{buildroot}%{_sbindir}
+mkdir -p %{buildroot}%{_initrddir}
+mkdir -p %{buildroot}%{_sysconfdir}/cron.daily
+mkdir -p %{buildroot}%{_sysconfdir}/cron.hourly
+mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
+mkdir -p %{buildroot}%{_libexecdir}
+mkdir -p %{buildroot}%{_var}/lib/bcfg2
+mkdir -p %{buildroot}%{_var}/cache/bcfg2
+
+mv %{buildroot}%{_bindir}/bcfg2* %{buildroot}%{_sbindir}
+
+install -m 755 debian/buildsys/common/bcfg2.init %{buildroot}%{_initrddir}/bcfg2
+install -m 755 debian/buildsys/common/bcfg2-server.init %{buildroot}%{_initrddir}/bcfg2-server
+install -m 755 debian/bcfg2.cron.daily %{buildroot}%{_sysconfdir}/cron.daily/bcfg2
+install -m 755 debian/bcfg2.cron.hourly %{buildroot}%{_sysconfdir}/cron.hourly/bcfg2
+install -m 755 tools/bcfg2-cron %{buildroot}%{_libexecdir}/bcfg2-cron
+
+install -m 644 debian/bcfg2.default %{buildroot}%{_sysconfdir}/sysconfig/bcfg2
+
+touch %{buildroot}%{_sysconfdir}/bcfg2.conf
+touch %{buildroot}%{_sysconfdir}/bcfg2.key
+
+%clean
+rm -rf %{buildroot}
+
+%post
+/sbin/chkconfig --add bcfg2
+
+%preun
+if [ $1 = 0 ]; then
+ /sbin/service bcfg2 stop >/dev/null 2>&1 || :
+ /sbin/chkconfig --del bcfg2
+fi
+
+%postun
+if [ "$1" -ge "1" ]; then
+ /sbin/service bcfg2 condrestart >/dev/null 2>&1 || :
+fi
+
+%post server
+/sbin/chkconfig --add bcfg2-server
+
+%preun server
+if [ $1 = 0 ]; then
+ /sbin/service bcfg2-server stop >/dev/null 2>&1 || :
+ /sbin/chkconfig --del bcfg2-server
+fi
+
+%postun server
+if [ "$1" -ge "1" ]; then
+ /sbin/service bcfg2-server condrestart >/dev/null 2>&1 || :
+fi
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS examples COPYRIGHT README
+
+%ghost %attr(600,root,root) %config(noreplace) %{_sysconfdir}/bcfg2.conf
+
+%config(noreplace) %{_sysconfdir}/sysconfig/bcfg2
+%{_sysconfdir}/cron.daily/bcfg2
+%{_sysconfdir}/cron.hourly/bcfg2
+
+%{_initrddir}/bcfg2
+
+%{python_sitelib}/Bcfg2*.egg-info
+%dir %{python_sitelib}/Bcfg2
+%{python_sitelib}/Bcfg2/__init__.*
+%{python_sitelib}/Bcfg2/Client
+%{python_sitelib}/Bcfg2/Component.*
+%{python_sitelib}/Bcfg2/Daemon.*
+%{python_sitelib}/Bcfg2/Logging.*
+%{python_sitelib}/Bcfg2/Options.*
+%{python_sitelib}/Bcfg2/Proxy.*
+%{python_sitelib}/Bcfg2/tlslite
+
+%{_sbindir}/bcfg2
+%{_mandir}/man1/bcfg2.1*
+%{_mandir}/man5/bcfg2.conf.5*
+
+%{_libexecdir}/bcfg2-cron
+
+%dir %{_var}/cache/bcfg2
+
+
+%files server
+%defattr(-,root,root,-)
+
+%ghost %attr(600,root,root) %config(noreplace) %{_sysconfdir}/bcfg2.key
+
+%{_initrddir}/bcfg2-server
+
+%{python_sitelib}/Bcfg2/Server
+
+%{_datadir}/bcfg2
+
+%{_sbindir}/bcfg2-admin
+%{_sbindir}/bcfg2-build-reports
+%{_sbindir}/bcfg2-info
+%{_sbindir}/bcfg2-ping-sweep
+%{_sbindir}/bcfg2-repo-validate
+%{_sbindir}/bcfg2-remote
+%{_sbindir}/bcfg2-server
+
+%{_mandir}/man8/bcfg2-admin.8*
+%{_mandir}/man8/bcfg2-build-reports.8*
+%{_mandir}/man8/bcfg2-info.8*
+%{_mandir}/man8/bcfg2-repo-validate.8*
+%{_mandir}/man8/bcfg2-remote.8*
+%{_mandir}/man8/bcfg2-server.8*
+
+%dir %{_var}/lib/bcfg2
+
+%changelog
+* Thu May 08 2008 Robin Bowes <robin@robinbowes.com> 0.9.6-0.1
+- Revised spec file to build directly from svn checkout using Makefile
+- copied lots of stuff from the "official" spec file
+
+* Fri Feb 2 2007 Mike Brady <mike.brady@devnull.net.nz> 0.9.1
+- Removed use of _libdir due to Red Hat x86_64 issue.
+
+* Fri Dec 22 2006 Jeffrey C. Ollie <jeff@ocjtech.us> - 0.8.7.1-5
+- Server needs client library files too so put them in main package
+
+* Wed Dec 20 2006 Jeffrey C. Ollie <jeff@ocjtech.us> - 0.8.7.1-4
+- Yes, actually we need to require openssl
+
+* Wed Dec 20 2006 Jeffrey C. Ollie <jeff@ocjtech.us> - 0.8.7.1-3
+- Don't generate SSL cert in post script, it only needs to be done on
+ the server and is handled by the bcfg2-admin tool.
+- Move the /etc/bcfg2.key file to the server package
+- Don't install a sample copy of the config file, just ghost it
+- Require gamin-python for the server package
+- Don't require openssl
+- Make the client a separate package so you don't have to have the
+ client if you don't want it
+
+* Wed Dec 20 2006 Jeffrey C. Ollie <jeff@ocjtech.us> - 0.8.7.1-2
+- Add more documentation
+
+* Mon Dec 18 2006 Jeffrey C. Ollie <jeff@ocjtech.us> - 0.8.7.1-1
+- First version for Fedora Extras
+
+* Fri Sep 15 2006 Narayan Desai <desai@mcs.anl.gov> - 0.8.4-1
+- Initial log
+