diff options
Diffstat (limited to 'misc/bcfg2.spec')
-rw-r--r-- | misc/bcfg2.spec | 238 |
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. |