f5ad403587
New features: - Introduced Solaris and AIX support into the 3.6 series, with many associated build and bug fixes. Changes: - Short-circuit evaluation of classes promises if class is already set (Redmine #5241) - fix to assume all non-specified return codes are failed in commands promises (Redmine #5986) - cf-serverd logs reconfiguration message to NOTICE (was INFO) so that it's always logged in syslog Bug fixes: - File monitoring has been completely rewritten (changes attribute in files promise), which eliminates many bugs, particularly regarding files that are deleted. Upgrading will keep all monitoring data, but downgrading again will reinitialize the DB, so all files will be reported as if they were new. (Redmine #2917) - $(this.promiser) expands in files promises for 'transformer', 'edit_template', 'copy_from.source', 'file_select.exec_program', 'classes' and 'action' bodies (Redmine #1554, #1496, #3530, #1563) - 'body changes' notifies about disappeared files in file monitoring (Redmine #2917) - Set not-kept classes when files or commands promise should be repaired, but is warn-only (Redmine #2359) - Fixed CFEngine template producing a zero-sized file (Redmine #6088) - Add 0-9 A-Z _ to allowed context of module protocol (Redmine #6063) - Extend ps command column width on Solaris and filter on zone rather than adding it to the ps output. - Fixed strftime() function on Solaris when called with certain specifiers. OBS-URL: https://build.opensuse.org/package/show/systemsmanagement/cfengine?expand=0&rev=101
479 lines
13 KiB
RPMSpec
479 lines
13 KiB
RPMSpec
#
|
|
# spec file for package cfengine
|
|
#
|
|
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%if 0%{?suse_version} >= 1210
|
|
%define have_systemd 1
|
|
%else
|
|
%define have_systemd 0
|
|
%endif
|
|
|
|
# set to 1 to enable adapter, leave 0 for minimal cfengine
|
|
%define with_mysql 0
|
|
%define with_postgresql 0
|
|
%define with_libvirt 0
|
|
|
|
Name: cfengine
|
|
Version: 3.6.1
|
|
Release: 0
|
|
%define srcname core-%{version}
|
|
%define libname libpromises
|
|
%define libsoname %{libname}3
|
|
|
|
# Yes, its not FHS conformant but in sync with cfengine documentation
|
|
# reported upstream as https://cfengine.com/dev/issues/1896
|
|
%define basedir /var/%{name}
|
|
%define workdir %{basedir}
|
|
# This is the place where workdir should be
|
|
#define basedir /var/lib/%{name}
|
|
#define workdir %{basedir}/work
|
|
|
|
Summary: CFEngine automates large-scale IT computing infrastructure
|
|
License: GPL-3.0
|
|
Group: Productivity/Networking/System
|
|
Url: http://www.cfengine.org/
|
|
Source: %{srcname}.tar.gz
|
|
Source1: %{name}.SuSEfirewall2
|
|
|
|
# wtf? SLE_11 does not honor rpmlintrc
|
|
%if 0%{?suse_version} <= 1130
|
|
BuildRequires: -post-build-checks
|
|
%endif
|
|
%if %have_systemd
|
|
Source7: cf-execd.service
|
|
Source8: cf-monitord.service
|
|
Source9: cf-serverd.service
|
|
%else
|
|
Source7: cf-monitord
|
|
Source8: cf-execd
|
|
Source9: cf-serverd
|
|
%endif
|
|
Source10: %{name}.cron
|
|
Source11: %{name}-rpmlintrc
|
|
|
|
# docs
|
|
Source101: http://www.cfengine.org/manuals/cf3-Reference.pdf
|
|
Source102: http://www.cfengine.org/manuals/cf3-conceptguide.pdf
|
|
Source103: http://www.cfengine.org/manuals/cf3-glossary.pdf
|
|
Source104: http://www.cfengine.org/manuals/cf3-quickstart.pdf
|
|
Source105: http://www.cfengine.org/manuals/cf3-solutions.pdf
|
|
Source106: http://www.cfengine.org/manuals/cf3-tutorial.pdf
|
|
Source107: http://www.verticalsysadmin.com/cfengine/primer.pdf
|
|
|
|
# SLE 11 or RHEL5 autoconf does not support AM_SUBST_NOTMAKE, kkaempf@suse.de
|
|
Patch2: remove-am_subst_notmake.patch
|
|
|
|
# PATCH-FIX-UPSTREAM add 'suse' class for consistency with other vendor classes
|
|
# PATCH-FEATURE-UPSTREAM better /etc/SuSE-release parsing, upstream #5423
|
|
# kkaempf@suse.de
|
|
Patch5: 0001-Simplify-and-fix-parsing-of-etc-SuSE-release-fixes-i.patch
|
|
|
|
# PATCH-FIX-SUSE
|
|
# set cfengine's notion of bindir to /usr/sbin instead of /var/cfengine/bin
|
|
# kkaempf@suse.de
|
|
Patch6: 0002-Set-sys.bindir-to-usr-sbin-expect-cf-components-ther.patch
|
|
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
BuildRequires: bison
|
|
BuildRequires: db-devel
|
|
BuildRequires: flex
|
|
BuildRequires: libtool
|
|
BuildRequires: libxml2-devel
|
|
BuildRequires: lmdb-devel
|
|
BuildRequires: pam-devel
|
|
#
|
|
# Disable mysql for SLE_11:
|
|
#
|
|
# configure: error: MySQL client library exports symbols clashing with
|
|
# OpenSSL. Get the update from distribution provider, recompile MySQL
|
|
# library or disable MySQL connector. See
|
|
# http://bugs.mysql.com/bug.php?id=65055 for details.
|
|
#
|
|
%if %with_mysql
|
|
%if 0%{?suse_version} != 1110 && 0%{?rhel_version} == 0
|
|
BuildRequires: mysql-devel
|
|
%endif
|
|
%endif
|
|
BuildRequires: libacl-devel
|
|
%if %with_libvirt
|
|
BuildRequires: libvirt-devel
|
|
%endif
|
|
BuildRequires: openssl-devel
|
|
BuildRequires: pcre-devel
|
|
%if %with_postgresql
|
|
BuildRequires: postgresql-devel
|
|
%endif
|
|
|
|
%if !%have_systemd
|
|
# no systemd -> use cron
|
|
%if 0%{?centos_version} || 0%{?rhel_version}
|
|
Requires: vixie-cron
|
|
%else
|
|
Requires: cron
|
|
%endif
|
|
%endif
|
|
|
|
%if 0%{?suse_version}
|
|
PreReq: %install_info_prereq
|
|
BuildRequires: texlive
|
|
%endif
|
|
|
|
%if %have_systemd
|
|
BuildRequires: systemd
|
|
%{?systemd_requires}
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 01020
|
|
BuildRequires: fdupes
|
|
%endif
|
|
|
|
Requires: %{libsoname} = %{version}
|
|
|
|
%description
|
|
CFEngine is the core of a configuration management system: ensuring
|
|
the availability, security and compliance of mission-critical
|
|
applications and services. Based on popular and flexible open source
|
|
configuration management software, CFEngine configuration management
|
|
products are highly scalable through decentralized, autonomous agents
|
|
that can continuously monitor, self-repair, and update the IT
|
|
infrastructure of a global multi-site enterprise - with negligible
|
|
impact on system resources or performance.
|
|
|
|
%package -n %{libsoname}
|
|
Summary: Shared library of cfengine
|
|
Group: System/Libraries
|
|
Provides: %{libname}1 = %{version}
|
|
Obsoletes: %{libname}1 < %{version}
|
|
%if 0%{?suse_version} == 1010
|
|
Requires: glibc
|
|
%endif
|
|
|
|
%description -n %{libsoname}
|
|
This package contains the shared libpromises (cfengine) library.
|
|
|
|
%package -n %{libname}-devel
|
|
Summary: Development package for libpromises
|
|
Group: Development/Libraries/C and C++
|
|
Provides: %{name}-devel = %{version}
|
|
Obsoletes: %{name}-devel < %{version}
|
|
Requires: %{libsoname} = %{version}
|
|
Requires: glibc-devel
|
|
|
|
%description -n %{libname}-devel
|
|
A high-speed character set detection library
|
|
|
|
This package contains the files needed to compile programs that use the
|
|
libpromises library.
|
|
|
|
%package doc
|
|
Summary: CFEngine automates large-scale IT computing infrastructure - documentation
|
|
Group: Documentation/Other
|
|
%if 0%{?rhel_version} || 0%{?centos_version}
|
|
BuildRequires: tetex
|
|
BuildRequires: tetex-dvips
|
|
BuildRequires: tetex-latex
|
|
BuildRequires: texinfo
|
|
%endif
|
|
|
|
%description doc
|
|
Full documentation for cfengine
|
|
|
|
%package examples
|
|
Summary: CFEngine example promises
|
|
Group: Documentation/Other
|
|
|
|
%description examples
|
|
Lots of examples promises for CFEngine.
|
|
|
|
%prep
|
|
%setup -q -n %{srcname}
|
|
%if 0%{?suse_version} <= 1110
|
|
%patch2 -p1
|
|
%endif
|
|
%if 0%{?rhel_version} >= 500 && 0%{?rhel_version} < 600
|
|
%patch2 -p1
|
|
%endif
|
|
%patch5 -p1
|
|
%patch6 -p1
|
|
|
|
##### rpmlint
|
|
#### wrong-file-end-of-line-encoding
|
|
#### incorrect-fsf-address
|
|
### http://www.fsf.org/about/contact/
|
|
find ./examples -type f -name "*.cf" -exec perl -p -i -e 's|\r\n|\n|,s|^# Foundation.*|# Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA|' {} \;
|
|
|
|
### install extra docs
|
|
%{__install} -d docs
|
|
cp -a $RPM_SOURCE_DIR/*pdf docs/
|
|
|
|
%build
|
|
autoreconf -fi -I m4
|
|
# /usr/include/sys for acl.h
|
|
CC=gcc CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \
|
|
%configure \
|
|
--disable-static \
|
|
--enable-fhs \
|
|
--datadir=/var \
|
|
--with-workdir=%{workdir} \
|
|
%if %with_postgresql
|
|
--with-postgresql \
|
|
%endif
|
|
%if %with_mysql
|
|
%if 0%{?suse_version} != 1110 && 0%{?rhel_version} == 0 && 0%{?fedora_version} != 20
|
|
--with-mysql \
|
|
%endif
|
|
%endif
|
|
--without-qdbm \
|
|
--without-tokyocabinet \
|
|
--with-lmdb \
|
|
--with-pthreads \
|
|
--with-openssl \
|
|
--with-pcre \
|
|
%if %with_libvirt
|
|
--with-libvirt \
|
|
%endif
|
|
--with-libacl \
|
|
--with-libxml2 \
|
|
%if 0%{?suse_version} >= 1110
|
|
--docdir=%{_docdir}/%{name}
|
|
%else if 0%{?rhel_version} >= 600
|
|
--docdir=%{_docdir}/%{name}-%{version}
|
|
%endif
|
|
# SLE 10 and RHEL5 don't recognize --docdir
|
|
|
|
%{__make} %{?_smp_mflags}
|
|
|
|
# --datadir=/var/lib/%%{name}/inputs \
|
|
|
|
%install
|
|
|
|
chmod -x ChangeLog
|
|
|
|
%if 0%{?rhel_version} || 0%{?centos_version} || 0%{?fedora_version}
|
|
[ -d %{buildroot} ] && [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
|
|
%endif
|
|
%{__make} "DESTDIR=%{buildroot}" install
|
|
|
|
%if 0%{?suse_version} >= 1110 || 0%{?rhel_version} >= 600
|
|
# will appear in cfengine-examples
|
|
rm -rf %{buildroot}/%{_docdir}/%{name}/examples
|
|
%endif
|
|
|
|
%{__install} -d %{buildroot}/{usr/sbin,%{workdir}/{bin,inputs,reports}}
|
|
|
|
# create dirs needed for better organizing dirs and files
|
|
%{__install} -d %{buildroot}/%{basedir}/{backup,failsafe,config,plugins}
|
|
#%%{__install} -d %{buildroot}/%%{basedir}/config/{development,production}
|
|
|
|
%if %have_systemd
|
|
# systemd: install sample cron file in docdir
|
|
%if 0%{?suse_version}
|
|
%{__install} -D -m0644 %{S:10} %{buildroot}/%{_docdir}/%{name}
|
|
%else
|
|
%{__install} -D -m0644 %{S:10} %{buildroot}/%{_docdir}/%{name}-%{version}
|
|
%endif
|
|
%else
|
|
# no systemd -> use cron
|
|
# install cron file
|
|
%{__install} -D -m0644 %{S:10} %{buildroot}/%{_sysconfdir}/cron.d/%{name}
|
|
%endif
|
|
|
|
%if %have_systemd
|
|
# install systemd scripts
|
|
%{__install} -D -m 0644 %{S:7} %{buildroot}/%_unitdir/cf-execd.service
|
|
%{__install} -D -m 0644 %{S:8} %{buildroot}/%_unitdir/cf-monitord.service
|
|
%{__install} -D -m 0644 %{S:9} %{buildroot}/%_unitdir/cf-serverd.service
|
|
%else
|
|
# install init scripts
|
|
%{__install} -d %{buildroot}/etc/init.d
|
|
%{__install} -m 0755 %{S:7} %{S:8} %{S:9} %{buildroot}/etc/init.d/
|
|
%{__ln_s} -f ../../etc/init.d/cf-monitord %{buildroot}/%{_sbindir}/rccf-monitord
|
|
%{__ln_s} -f ../../etc/init.d/cf-execd %{buildroot}/%{_sbindir}/rccf-execd
|
|
%{__ln_s} -f ../../etc/init.d/cf-serverd %{buildroot}/%{_sbindir}/rccf-serverd
|
|
# sed @workdir@ in initscripts/cron.d
|
|
sed -i\
|
|
-e "s,@workdir@,%{workdir},g"\
|
|
-e "s,@basedir@,%{basedir},g" \
|
|
%{buildroot}/etc/init.d/cf-* %{buildroot}/etc/cron.d/%{name}
|
|
%endif
|
|
|
|
# create symlinks for sbin_PROGRAMS
|
|
# because: cf-promises needs to be installed in /var/cfengine/work/bin for pre-validation of full configuration
|
|
for i in cf-agent cf-execd cf-key cf-monitord cf-promises cf-runagent cf-serverd cf-upgrade; do
|
|
%{__ln_s} -f ../../..%{_sbindir}/${i} %{buildroot}%{workdir}/bin/${i}
|
|
done
|
|
|
|
rm -rf %{buildroot}/%{_libdir}/%{name}/libpromises.la
|
|
|
|
# will appear in %%docdir
|
|
rm -rf %{buildroot}/%{_datadir}/%{name}/ChangeLog
|
|
rm -rf %{buildroot}/%{_datadir}/%{name}/README
|
|
|
|
# create man pages, see https://cfengine.com/dev/issues/2989
|
|
%{__install} -d %{buildroot}/%{_mandir}/man8
|
|
for i in cf-agent cf-execd cf-key cf-monitord cf-promises cf-runagent cf-serverd
|
|
do
|
|
LD_LIBRARY_PATH=%{buildroot}%{_libdir}/%{name} %{buildroot}%{_sbindir}/$i -M > %{buildroot}%{_mandir}/man8/$i.8
|
|
gzip %{buildroot}%{_mandir}/man8/$i.8
|
|
done
|
|
|
|
%if 0%{?suse_version} > 1010
|
|
install -D -m 644 %{S:1} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/cfengine
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 01020
|
|
%fdupes %{buildroot}/usr/share/cfengine
|
|
%endif
|
|
|
|
# systemd
|
|
%if %have_systemd
|
|
|
|
####################################################################
|
|
# Systemd
|
|
####################################################################
|
|
|
|
%pre
|
|
%service_add_pre cf-execd.service cf-monitord.service cf-serverd.service
|
|
|
|
%post
|
|
%service_add_post cf-execd.service cf-monitord.service cf-serverd.service
|
|
%if 0%{?suse_version} > 1010
|
|
%install_info --name=%{name} --info-dir=%{_infodir} %{_infodir}/cf3-reference.info.gz
|
|
%endif
|
|
/sbin/ldconfig
|
|
if [ $1 -lt 2 ]; then
|
|
# first install, generate key pair
|
|
cf-key
|
|
fi
|
|
|
|
%preun
|
|
%service_del_preun cf-execd.service cf-monitord.service cf-serverd.service
|
|
|
|
%postun
|
|
%service_del_postun cf-execd.service cf-monitord.service cf-serverd.service
|
|
%if 0%{?suse_version} > 1010
|
|
%install_info_delete --name=%{name} --info-dir=%{_infodir} %{_infodir}/cf3-reference.info.gz
|
|
%endif
|
|
if [ $1 -eq 0 ]; then
|
|
# clean up inputs cache dir on removal
|
|
rm -rf %{basedir}/inputs/*
|
|
fi
|
|
/sbin/ldconfig
|
|
|
|
%else # !systemd
|
|
|
|
####################################################################
|
|
# Non-systemd
|
|
####################################################################
|
|
|
|
%preun
|
|
%if 0%{?suse_version}
|
|
%stop_on_removal cf-monitord
|
|
%stop_on_removal cf-execd
|
|
%stop_on_removal cf-serverd
|
|
%else
|
|
/etc/init.d/cf-execd stop
|
|
/etc/init.d/cf-monitord stop
|
|
/etc/init.d/cf-serverd stop
|
|
%endif
|
|
|
|
%post
|
|
%if 0%{?suse_version} > 1010
|
|
%install_info --name=%{name} --info-dir=%{_infodir} %{_infodir}/cf3-reference.info.gz
|
|
%endif
|
|
/sbin/ldconfig
|
|
|
|
%postun
|
|
%if 0%{?suse_version} > 1010
|
|
%install_info_delete --name=%{name} --info-dir=%{_infodir} %{_infodir}/cf3-reference.info.gz
|
|
%insserv_cleanup
|
|
for i in execd monitord serverd; do
|
|
%restart_on_update cf-${i}
|
|
done
|
|
%else
|
|
# Update ?
|
|
if [ ${1:-0} -eq 1 ]; then
|
|
for i in execd monitord serverd; do
|
|
/etc/init.d/cf-${i} restart
|
|
done
|
|
else
|
|
:
|
|
fi
|
|
%endif
|
|
/sbin/ldconfig
|
|
|
|
%endif # !systemd
|
|
|
|
%post -n %{libsoname} -p /sbin/ldconfig
|
|
|
|
%postun -n %{libsoname} -p /sbin/ldconfig
|
|
|
|
%files
|
|
%defattr(-,root,root)
|
|
%doc ChangeLog LICENSE README.md
|
|
%{_sbindir}/cf-agent
|
|
%{_sbindir}/cf-execd
|
|
%{_sbindir}/cf-key
|
|
%{_sbindir}/cf-monitord
|
|
%{_sbindir}/cf-promises
|
|
%{_sbindir}/cf-serverd
|
|
%{_sbindir}/cf-upgrade
|
|
%{_sbindir}/cf-runagent
|
|
%{_sbindir}/rpmvercmp
|
|
%if %have_systemd
|
|
%_unitdir/cf-execd.service
|
|
%_unitdir/cf-monitord.service
|
|
%_unitdir/cf-serverd.service
|
|
%else
|
|
%config %attr(0755,root,root) /etc/init.d/*
|
|
%{_sbindir}/rccf-execd
|
|
%{_sbindir}/rccf-monitord
|
|
%{_sbindir}/rccf-serverd
|
|
%endif
|
|
%if 0%{?suse_version} > 1010
|
|
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/cfengine
|
|
%endif
|
|
|
|
%{_mandir}/man8/*
|
|
%dir %{basedir}
|
|
|
|
%dir %{workdir}
|
|
%{workdir}/*
|
|
|
|
%if !%have_systemd
|
|
%config(noreplace) /etc/cron.d/%{name}
|
|
%endif
|
|
|
|
%files -n %{libsoname}
|
|
%defattr(-,root,root)
|
|
%dir %{_libdir}/%{name}
|
|
%{_libdir}/%{name}/%{libname}.so.*
|
|
|
|
%files -n %{libname}-devel
|
|
%defattr(-,root,root)
|
|
%{_libdir}/%{name}/%{libname}.so
|
|
|
|
%files doc
|
|
%defattr(-,root,root)
|
|
%doc docs/*.pdf
|
|
|
|
%files examples
|
|
%defattr(-,root,root)
|
|
%doc examples/*cf
|
|
|
|
%changelog
|