summaryrefslogtreecommitdiffstats
path: root/misc/bcfg2.spec
diff options
context:
space:
mode:
Diffstat (limited to 'misc/bcfg2.spec')
-rw-r--r--misc/bcfg2.spec238
1 files changed, 188 insertions, 50 deletions
diff --git a/misc/bcfg2.spec b/misc/bcfg2.spec
index 54cb11ca8..75c6090a0 100644
--- a/misc/bcfg2.spec
+++ b/misc/bcfg2.spec
@@ -1,45 +1,67 @@
-%define release 0.1
+%define release 0.2
%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})
-
Name: bcfg2
-Version: 1.2.0
+Version: 1.2.2
Release: %{release}
Summary: Configuration management system
+%if 0%{?suse_version}
+# http://en.opensuse.org/openSUSE:Package_group_guidelines
+Group: System/Management
+%else
Group: Applications/System
+%endif
License: BSD
URL: http://bcfg2.org
Source0: ftp://ftp.mcs.anl.gov/pub/bcfg/%{name}-%{version}.tar.gz
+%if 0%{?suse_version}
+# SUSEs OBS does not understand the id macro below.
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
+%else
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
+%endif
BuildArch: noarch
BuildRequires: python-devel
-BuildRequires: %{lxmldep}
+BuildRequires: python-lxml
+%if 0%{?mandriva_version}
+# mandriva seems to behave differently than other distros and needs this explicitly.
+BuildRequires: python-setuptools
+%endif
+%if 0%{?mandriva_version} == 201100
+# mandriva 2011 has multiple providers for libsane, so (at least when building on OBS)
+# one must be chosen explicitly:
+# "have choice for libsane.so.1 needed by python-imaging: libsane1 sane-backends-iscan"
+BuildRequires: libsane1
+%endif
# %{rhel} wasn't set before rhel 6. so this checks for old RHEL
# %systems (and potentially very old Fedora systems, too)
-%if "%{_vendor}" == "redhat" && 0%{?rhel} <= 6 && 0%{?fedora} == 0
-BuildRequires: python-sphinx10
+%if "%{_vendor}" == "redhat" && 0%{?rhel} < 6 && 0%{?fedora} == 0
+BuildRequires: python-sphinx10
# the python-sphinx10 package doesn't set sys.path correctly, so we
# have to do it for them
-%define pythonpath /usr/lib/python%{py_ver}/site-packages/Sphinx-1.0.4-py%{py_ver}.egg
+%define pythonpath %(find %{python_sitelib} -name Sphinx*.egg)
%else
-BuildRequires: python-sphinx >= 0.6
+BuildRequires: python-sphinx >= 0.6
%endif
-Requires: %{lxmldep} >= 0.9
+Requires: python-nose
+Requires: python-lxml >= 0.9
+%if 0%{?rhel_version}
+# the debian init script needs redhat-lsb.
+# iff we switch to the redhat one, this might not be needed anymore.
+Requires: redhat-lsb
+%endif
+%if "%{_vendor}" != "redhat"
+# fedora and rhel (and possibly other distros) do not know this tag.
+Recommends: cron
+%endif
%description
Bcfg2 helps system administrators produce a consistent, reproducible,
@@ -67,20 +89,28 @@ systems are constantly changing; if required in your environment,
Bcfg2 can enable the construction of complex change management and
deployment strategies.
-%package -n bcfg2-server
-Version: %{version}
-Summary: Bcfg2 Server
-Group: System Tools
-Requires: bcfg2
+This package includes the Bcfg2 client software.
+
+%package server
+Version: 1.2.2
+Summary: Bcfg2 Server
+%if 0%{?suse_version}
+Group: System/Management
+%else
+Group: System Tools
+%endif
+Requires: bcfg2
%if "%{py_ver}" < "2.6"
Requires: python-ssl
%endif
-Requires: %{lxmldep} >= 1.2.1
+Requires: python-lxml >= 1.2.1
%if "%{_vendor}" == "redhat"
-Requires: gamin-python
+Requires: gamin-python
%endif
+Requires: /usr/sbin/sendmail
+Requires: /usr/bin/openssl
-%description -n bcfg2-server
+%description server
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
@@ -106,28 +136,63 @@ systems are constantly changing; if required in your environment,
Bcfg2 can enable the construction of complex change management and
deployment strategies.
-%package -n bcfg2-doc
+This package includes the Bcfg2 server software.
+
+%package doc
Summary: Configuration management system documentation
+%if 0%{?suse_version}
+Group: Documentation/HTML
+%else
Group: Documentation
+%endif
+
+%description doc
+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.
-%description -n bcfg2-doc
-Configuration management system documentation
+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.
-%package -n bcfg2-web
-Version: %{version}
-Summary: Bcfg2 Web Reporting Interface
-Group: System Tools
-Requires: bcfg2-server
-Requires: httpd,Django
+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.
+
+This package includes the Bcfg2 documentation.
+
+%package web
+Version: 1.2.2
+Summary: Bcfg2 Web Reporting Interface
+%if 0%{?suse_version}
+Group: System/Management
+%else
+Group: System Tools
+%endif
+Requires: bcfg2-server
+Requires: httpd,Django
%if "%{_vendor}" == "redhat"
-Requires: mod_wsgi
+Requires: mod_wsgi
%define apache_conf %{_sysconfdir}/httpd
%else
-Requires: apache2-mod_wsgi
+Requires: apache2-mod_wsgi
%define apache_conf %{_sysconfdir}/apache2
%endif
-%description -n bcfg2-web
+%description web
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
@@ -153,8 +218,10 @@ systems are constantly changing; if required in your environment,
Bcfg2 can enable the construction of complex change management and
deployment strategies.
+This package includes the Bcfg2 reports web frontend.
+
%prep
-%setup -q -n bcfg2-%{version}
+%setup -q -n %{name}-%{version}
%build
%{__python}%{pythonversion} setup.py build
@@ -164,6 +231,7 @@ deployment strategies.
%{__python}%{pythonversion} setup.py build_sphinx
%install
+rm -rf %{buildroot}
%{__python}%{pythonversion} setup.py install --root=%{buildroot} --record=INSTALLED_FILES --prefix=/usr
%{__install} -d %{buildroot}%{_bindir}
%{__install} -d %{buildroot}%{_sbindir}
@@ -173,8 +241,11 @@ deployment strategies.
%{__install} -d %{buildroot}%{_sysconfdir}/cron.hourly
%{__install} -d %{buildroot}%{_prefix}/lib/bcfg2
mkdir -p %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}
+%if 0%{?suse_version}
+%{__install} -d %{buildroot}/var/adm/fillup-templates
+%endif
-%{__mv} %{buildroot}/usr/bin/bcfg2* %{buildroot}%{_sbindir}
+%{__mv} %{buildroot}%{_bindir}/bcfg2* %{buildroot}%{_sbindir}
%{__install} -m 755 debian/bcfg2.init %{buildroot}%{_initrddir}/bcfg2
%{__install} -m 755 debian/bcfg2-server.init %{buildroot}%{_initrddir}/bcfg2-server
%{__install} -m 755 debian/bcfg2.default %{buildroot}%{_sysconfdir}/default/bcfg2
@@ -182,6 +253,12 @@ mkdir -p %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}
%{__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}%{_prefix}/lib/bcfg2/bcfg2-cron
+%if 0%{?suse_version}
+%{__install} -m 755 debian/bcfg2.default %{buildroot}/var/adm/fillup-templates/sysconfig.bcfg2
+%{__install} -m 755 debian/bcfg2-server.default %{buildroot}/var/adm/fillup-templates/sysconfig.bcfg2-server
+ln -s %{_initrddir}/bcfg2 %{buildroot}%{_sbindir}/rcbcfg2
+ln -s %{_initrddir}/bcfg2-server %{buildroot}%{_sbindir}/rcbcfg2-server
+%endif
mv build/sphinx/html/* %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}
mv build/dtd %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}/
@@ -191,13 +268,19 @@ mv build/dtd %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}/
%{__mkdir_p} %{buildroot}%{_localstatedir}/cache/bcfg2
+# mandriva and RHEL 5 cannot handle %ghost without the file existing,
+# so let's touch a bunch of empty config files
+touch %{buildroot}%{_sysconfdir}/bcfg2.conf %{buildroot}%{_sysconfdir}/bcfg2-web.conf
+
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} || exit 2
-%files -n bcfg2
+%files
%defattr(-,root,root,-)
%{_sbindir}/bcfg2
+%dir %{python_sitelib}/Bcfg2
%{python_sitelib}/Bcfg2/*.py*
+%dir %{python_sitelib}/Bcfg2/Client
%{python_sitelib}/Bcfg2/Client/*
%{_mandir}/man1/bcfg2.1*
%{_mandir}/man5/bcfg2.conf.5*
@@ -207,15 +290,16 @@ mv build/dtd %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}/
%{_sysconfdir}/cron.daily/bcfg2
%{_prefix}/lib/bcfg2/bcfg2-cron
%{_localstatedir}/cache/bcfg2
+%if 0%{?suse_version}
+%{_sbindir}/rcbcfg2
+%config(noreplace) /var/adm/fillup-templates/sysconfig.bcfg2
+%endif
+%ghost %config(noreplace,missingok) %attr(0600,root,root) %{_sysconfdir}/bcfg2.conf
-%post -n bcfg2-server
-/sbin/chkconfig --add bcfg2-server
-
-%files -n bcfg2-server
+%files server
%defattr(-,root,root,-)
-
%{_initrddir}/bcfg2-server
-
+%dir %{python_sitelib}/Bcfg2
%{python_sitelib}/Bcfg2/Server
%if "%{pythonversion}" >= "2.5"
@@ -236,30 +320,84 @@ mv build/dtd %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}/
%{_sbindir}/bcfg2-reports
%{_sbindir}/bcfg2-server
%{_sbindir}/bcfg2-yum-helper
+%{_sbindir}/bcfg2-test
+%if 0%{?suse_version}
+%{_sbindir}/rcbcfg2-server
+%config(noreplace) /var/adm/fillup-templates/sysconfig.bcfg2-server
+%endif
%{_mandir}/man5/bcfg2-lint.conf.5*
%{_mandir}/man8/*.8*
%dir %{_prefix}/lib/bcfg2
+%ghost %config(noreplace,missingok) %attr(0600,root,root) %{_sysconfdir}/bcfg2.conf
%files doc
%defattr(-,root,root,-)
%doc %{_defaultdocdir}/bcfg2-doc-%{version}
-%files -n bcfg2-web
+%files web
%defattr(-,root,root,-)
-
%{_datadir}/bcfg2/reports.wsgi
%{_datadir}/bcfg2/site_media
-
+%dir %{apache_conf}
+%dir %{apache_conf}/conf.d
%config(noreplace) %{apache_conf}/conf.d/wsgi_bcfg2.conf
+%ghost %config(noreplace,missingok) %attr(0640,root,apache) %{_sysconfdir}/bcfg2-web.conf
+
+%post server
+# enable daemon on first install only (not on update).
+if [ $1 -eq 1 ]; then
+%if 0%{?suse_version}
+ %fillup_and_insserv -f bcfg2-server
+%else
+ /sbin/chkconfig --add bcfg2-server
+%endif
+fi
+
+%preun
+%if 0%{?suse_version}
+# stop on removal (not on update).
+if [ $1 -eq 0 ]; then
+ %stop_on_removal bcfg2
+fi
+%endif
+
+%preun server
+%if 0%{?suse_version}
+if [ $1 -eq 0 ]; then
+ %stop_on_removal bcfg2-server
+fi
+%endif
+
+%postun
+%if 0%{?suse_version}
+if [ $1 -eq 0 ]; then
+ %insserv_cleanup
+fi
+%endif
+
+%postun server
+%if 0%{?suse_version}
+if [ $1 -eq 0 ]; then
+ # clean up on removal.
+ %insserv_cleanup
+fi
+%endif
%changelog
-%changelog
+* Sat Feb 18 2012 Christopher 'm4z' Holm <686f6c6d@googlemail.com> 1.2.1
+- Added Fedora and Mandriva compatibilty (for Open Build Service).
+- Added missing dependency redhat-lsb.
+
+* Tue Feb 14 2012 Christopher 'm4z' Holm <686f6c6d@googlemail.com> 1.2.1
+- Added openSUSE compatibility.
+- Various changes to satisfy rpmlint.
+
* Thu Jan 27 2011 Chris St. Pierre <stpierreca@ornl.gov> 1.2.0pre1-0.0
- Added -doc sub-package
* Mon Jun 21 2010 Fabian Affolter <fabian@bernewireless.net> - 1.1.0rc3-0.1
-- Changed source0 in order that it works with spectool
+- Changed source0 in order that it works with spectool
* 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.