a0e3d96145
Fixes: - Reduce verbosity of apt_get package module (Redmine #7485) - Reduce verbosity of yum package module (Redmine #7485) - The isvariable() function call now correctly accepts all array variables when specified inline. Previously it would not accept certain special characters, even though they could be specified indirectly by using a variable to hold it. (Redmine #7088) - Don't follow symbolic links when copying extended attributes. - Fix a bug which sometimes caused package promises to be skipped with "XX Another cf-agent seems to have done this since I started" messages in the log, most notably in long running cf-agent runs (longer than one minute). (Redmine #7933) - Fix bug which could render host unable to recover from a syntax error, even if failsafe.cf was utilized. This could happen if the file containing the syntax error was specified in the def.json special file. (Redmine #7961) - Change: Policy files specified in the "inputs" section of def.json will no longer be auto-loaded. One has to refer to the $(def.augments_inputs) variable in the policy (the standard masterfiles policies include this by default). This only affects installations which are not based on the standard masterfiles, and which are using the "inputs" field inside def.json. (Redmine #7961) - Fix file descriptor leak when there are network errors. - Fix cf-serverd error messages with classic protocol clients (Redmine #7818) - Installing packages containing version numbers using yum now works correctly. (Redmine #7825) - Fix ps options for FreeBSD to check processes only in current host and not in jails OBS-URL: https://build.opensuse.org/package/show/systemsmanagement/cfengine?expand=0&rev=139
396 lines
11 KiB
RPMSpec
396 lines
11 KiB
RPMSpec
#
|
|
# spec file for package cfengine
|
|
#
|
|
# Copyright (c) 2016 SUSE LINUX 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/
|
|
#
|
|
|
|
|
|
%define srcversion 3.8.2
|
|
%define srcname %{name}-%{srcversion}
|
|
%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 %{_localstatedir}/%{name}
|
|
%define workdir %{basedir}
|
|
%if 0%{?suse_version} >= 1210
|
|
%define have_systemd 1
|
|
%else
|
|
%define have_systemd 0
|
|
%endif
|
|
# pass --with-bla to enable the build
|
|
%bcond_with mysql
|
|
%bcond_with postgresql
|
|
%bcond_with libvirt
|
|
Name: cfengine
|
|
Version: %{srcversion}
|
|
Release: 0
|
|
# 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
|
|
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: 0001-Set-sys.bindir-to-usr-sbin-expect-cf-components-ther.patch
|
|
|
|
BuildRequires: bison
|
|
BuildRequires: db-devel
|
|
BuildRequires: flex
|
|
BuildRequires: libacl-devel
|
|
BuildRequires: libtool
|
|
BuildRequires: libxml2-devel
|
|
BuildRequires: lmdb-devel >= 0.9.17
|
|
BuildRequires: openssl-devel >= 1.0.2e
|
|
BuildRequires: pam-devel
|
|
BuildRequires: pcre-devel >= 8.38
|
|
%if 0%{?suse_version} == 0
|
|
# for testing on RHEL/Fedora
|
|
BuildRequires: fakeroot
|
|
%endif
|
|
Requires: %{libsoname} = %{version}
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
%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
|
|
%if %{with mysql}
|
|
BuildRequires: mysql-devel
|
|
%endif
|
|
%if %{with libvirt}
|
|
BuildRequires: libvirt-devel
|
|
%endif
|
|
%if %{with postgresql}
|
|
BuildRequires: postgresql-devel
|
|
%endif
|
|
%if %{have_systemd}
|
|
BuildRequires: systemd
|
|
%{?systemd_requires}
|
|
%else
|
|
# Without systemd we require cron
|
|
Requires: cron
|
|
%if 0%{?suse_version}
|
|
Requires(post): %insserv_prereq %fillup_prereq
|
|
%endif
|
|
%endif
|
|
# FHS was a hit with sle11 so it dies out otherwise
|
|
%if 0%{?suse_version} <= 1110
|
|
BuildRequires: -post-build-checks
|
|
%endif
|
|
%if 0%{?suse_version} > 1020
|
|
BuildRequires: fdupes
|
|
%endif
|
|
%if 0%{?fedora_version} == 20
|
|
BuildRequires: perl-Exporter
|
|
%endif
|
|
|
|
%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}
|
|
|
|
%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++
|
|
Requires: %{libsoname} = %{version}
|
|
Requires: glibc-devel
|
|
Provides: %{name}-devel = %{version}
|
|
Obsoletes: %{name}-devel < %{version}
|
|
|
|
%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
|
|
|
|
%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
|
|
%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 -fvi -I m4
|
|
# /usr/include/sys for acl.h
|
|
CC=cc CFLAGS="%{optflags} -fno-strict-aliasing" \
|
|
%configure \
|
|
--disable-static \
|
|
--disable-silent-rules \
|
|
--enable-fhs \
|
|
--datadir=/var \
|
|
--with-workdir=%{workdir} \
|
|
%if %{with postgresql}
|
|
--with-postgresql \
|
|
%endif
|
|
%if %{with mysql}
|
|
--with-mysql \
|
|
%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%{?rhel_version} > 0 && 0%{?rhel_version} < 700
|
|
--docdir=%{_docdir}/%{name}-%{version} \
|
|
%else
|
|
--docdir=%{_docdir}/%{name} \
|
|
%endif
|
|
--with-pam
|
|
|
|
make %{?_smp_mflags}
|
|
|
|
%check
|
|
# FAIL: process_test
|
|
make check %{?_smp_mflags} || :
|
|
|
|
%install
|
|
chmod -x ChangeLog
|
|
make "DESTDIR=%{buildroot}" install
|
|
|
|
# will appear in cfengine-examples
|
|
rm -rf %{buildroot}/%{_docdir}/%{name}/examples
|
|
|
|
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}
|
|
|
|
%if %{have_systemd}
|
|
# systemd: install sample cron file in docdir
|
|
install -D -m0644 %{SOURCE10} %{buildroot}/%{_docdir}/%{name}
|
|
%else
|
|
# no systemd -> use cron
|
|
# install cron file
|
|
install -D -m0644 %{SOURCE10} %{buildroot}/%{_sysconfdir}/cron.d/%{name}
|
|
%endif
|
|
|
|
%if %{have_systemd}
|
|
# install systemd scripts
|
|
install -D -m 0644 %{SOURCE7} %{buildroot}/%{_unitdir}/cf-execd.service
|
|
install -D -m 0644 %{SOURCE8} %{buildroot}/%{_unitdir}/cf-monitord.service
|
|
install -D -m 0644 %{SOURCE9} %{buildroot}/%{_unitdir}/cf-serverd.service
|
|
ln -s -f service %{buildroot}/%{_sbindir}/rccf-monitord
|
|
ln -s -f service %{buildroot}/%{_sbindir}/rccf-execd
|
|
ln -s -f service %{buildroot}/%{_sbindir}/rccf-serverd
|
|
%else
|
|
# install init scripts
|
|
install -d %{buildroot}%{_initddir}
|
|
install -m 0755 %{SOURCE7} %{SOURCE8} %{SOURCE9} %{buildroot}%{_initddir}/
|
|
ln -s -f ../..%{_initddir}/cf-monitord %{buildroot}/%{_sbindir}/rccf-monitord
|
|
ln -s -f ../..%{_initddir}/cf-execd %{buildroot}/%{_sbindir}/rccf-execd
|
|
ln -s -f ../..%{_initddir}/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}%{_initddir}/cf-* %{buildroot}%{_sysconfdir}/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
|
|
|
|
# Firewall
|
|
install -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/cfengine
|
|
|
|
# Ckeabyo dyoes
|
|
%if 0%{?suse_version} > 1020
|
|
%fdupes %{buildroot}%{_datadir}/cfengine
|
|
%endif
|
|
|
|
%pre
|
|
%if %{have_systemd}
|
|
%service_add_pre cf-execd.service cf-monitord.service cf-serverd.service
|
|
%endif
|
|
|
|
%post
|
|
%if %{have_systemd}
|
|
%service_add_post cf-execd.service cf-monitord.service cf-serverd.service
|
|
%else
|
|
for i in execd monitord serverd; do
|
|
%fillup_and_insserv cf-${i}
|
|
done
|
|
%endif
|
|
/sbin/ldconfig
|
|
if [ $1 -lt 2 ]; then
|
|
# first install, generate key pair
|
|
cf-key
|
|
fi
|
|
|
|
%preun
|
|
%if %{have_systemd}
|
|
%service_del_preun cf-execd.service cf-monitord.service cf-serverd.service
|
|
%else
|
|
for i in execd monitord serverd; do
|
|
%stop_on_removal cf-${i}
|
|
done
|
|
%endif
|
|
|
|
%postun
|
|
%if %{have_systemd}
|
|
%service_del_postun cf-execd.service cf-monitord.service cf-serverd.service
|
|
%else
|
|
%insserv_cleanup
|
|
for i in execd monitord serverd; do
|
|
%restart_on_update cf-${i}
|
|
done
|
|
%endif
|
|
if [ $1 -eq 0 ]; then
|
|
# clean up inputs cache dir on removal
|
|
rm -rf %{basedir}/inputs/*
|
|
fi
|
|
/sbin/ldconfig
|
|
|
|
%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) %{_initddir}/*
|
|
%endif
|
|
%{_sbindir}/rccf-execd
|
|
%{_sbindir}/rccf-monitord
|
|
%{_sbindir}/rccf-serverd
|
|
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/cfengine
|
|
%{_mandir}/man8/*
|
|
%dir %{basedir}
|
|
%dir %{workdir}
|
|
%{workdir}/*
|
|
%if !%{have_systemd}
|
|
%config(noreplace) %{_sysconfdir}/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
|