File puppet.spec of Package puppet.14603

#
# spec file for package puppet
#
# Copyright (c) 2020 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#


# backward compatible requirement SLE...
%{?!_initddir:%define _initddir %_initrddir}

%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services

Name:           puppet
Version:        3.8.5
Release:        0
Summary:        A network tool for managing many disparate systems
License:        Apache-2.0
Group:          Productivity/Networking/System
URL:            http://puppetlabs.com/puppet/what-is-puppet/
Source:         http://downloads.puppetlabs.com/puppet/%{name}-%{version}.tar.gz
Source1:        puppetmaster.fw
Source2:        puppet.fw
Source7:        puppet.changelog
Source6:        puppetmasterd.sysconfig
Patch0:         3.8.5-systemd_default_service_provider.patch
Patch1:         puppet-3.8.5-non_ASCII_user_comment.patch
Patch2:         puppet-3.8.5-CVE-2017-2295.patch
Patch3:         puppet-3.8.5-require-hiera-1.2.1.patch
Patch4:         puppet-3.8.5-CVE-2017-10689.patch
Patch5:         puppet-3.8.5-CVE-2020-7942.patch
Obsoletes:      hiera-puppet < 1.0.0
Provides:       hiera-puppet >= 1.0.0
Requires:       facter >= 1.7.0
Requires:       ruby >= 1.8.7
Requires:       ruby2.1-rubygem-hiera-1
Requires:       rubygem-hiera-1
Requires:       rubygem(%{rb_default_ruby_abi}:ruby-shadow) >= 2.1.4
BuildRequires:  facter >= 1.7.0
BuildRequires:  fdupes
BuildRequires:  ruby-devel >= 1.8.7
BuildRequires:  ruby2.1-rubygem-hiera-1
BuildRequires:  rubygem-hiera-1
# not really required but we do not wanna own their folders
BuildRequires:  emacs-nox
BuildRequires:  vim

BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Requires(pre):  /usr/sbin/groupadd
Requires(pre):  /usr/sbin/useradd
Requires(pre): %fillup_prereq
BuildRequires:  systemd
%{?systemd_requires}

%define         _unitdir /usr/lib/systemd

%description
Puppet lets you centrally manage every important aspect of your system
using a cross-platform specification language that manages all the
separate elements normally aggregated in different files, like users,
cron jobs, and hosts, along with obviously discrete elements like
packages, services, and files.

%package server
Summary:        A network tool for managing many disparate systems
Group:          Productivity/Networking/System
%{?systemd_requires}

%description server
Puppet lets you centrally manage every important aspect of your system
using a cross-platform specification language that manages all the
separate elements normally aggregated in different files, like users,
cron jobs, and hosts, along with obviously discrete elements like
packages, services, and files.

%prep
%setup -q
cp %{S:7} ChangeLog
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1

%build

%install
ruby install.rb install --destdir=%{buildroot} --sitelibdir=%{rb_vendorlibdir}
mkdir -p %{buildroot}%{_sysconfdir}/puppet
mkdir -p %{buildroot}/%{_sbindir}
mkdir -p %{buildroot}%{_localstatedir}/lib/puppet
mkdir -p %{buildroot}%{_localstatedir}/log/puppet
mkdir -p %{buildroot}/%{_fwdefdir}
mkdir -p %{buildroot}%{_unitdir}/system
install -m0644 ext/redhat/puppet.conf %{buildroot}%{_sysconfdir}/puppet/puppet.conf
install -m0644 conf/auth.conf %{buildroot}%{_sysconfdir}/puppet/auth.conf
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
cp ext/redhat/client.sysconfig %{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.puppet
cp ext/redhat/server.sysconfig %{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.puppetmaster
ln -sf service %{buildroot}/%{_sbindir}/rcpuppet
ln -sf service %{buildroot}/%{_sbindir}/rcpuppetmaster
install -m 644 %{SOURCE1} %{buildroot}/%{_fwdefdir}/puppetmasterd
install -m 644 %{SOURCE2} %{buildroot}/%{_fwdefdir}/puppet
# Latest git calls the service for agent puppet again
install -m 644 ext/systemd/puppet.service  %{buildroot}%{_unitdir}/system/puppet.service
install -m 644 ext/systemd/puppetmaster.service %{buildroot}%{_unitdir}/system/puppetmaster.service
%fdupes -s %{buildroot}/%{_mandir}

# puppet ext/ data
install -d -m0755 %{buildroot}%{_datadir}/%{name}
install -d -m0755 %{buildroot}%{_datadir}/%{name}/ext

# be specific, we don't need/want the OS specific stuff
for ii in \
    autotest \
    cert_inspector \
    dbfix.sql \
    envpuppet \
    ldap \
    logcheck \
    nagios \
    puppetlisten \
    puppet-load.rb \
    puppet-test \
    pure_ruby_dsl \
    rack \
    regexp_nodes \
    upload_facts.rb \
    yaml_nodes.rb 
do
    cp -a ext/$ii %{buildroot}%{_datadir}/%{name}/ext
done

# Install vim syntax files
vimdir=%{buildroot}%{_datadir}/vim/site
install -Dp -m0644 ext/vim/ftdetect/puppet.vim $vimdir/ftdetect/puppet.vim
install -Dp -m0644 ext/vim/syntax/puppet.vim $vimdir/syntax/puppet.vim

# Install emacs mode files
emacsdir=%{buildroot}%{_datadir}/emacs/site-lisp
install -Dp -m0644 ext/emacs/puppet-mode.el $emacsdir/puppet-mode.el
install -Dp -m0644 ext/emacs/puppet-mode-init.el \
    $emacsdir/site-start.d/puppet-mode-init.el

%pretrans server
if [ -x /usr/bin/puppet ] && [ "`/usr/bin/puppet --version | grep '^3.3.1'`" ]; then
    echo old > /run/puppet_migrate
fi

%pre server
getent group puppet >/dev/null || /usr/sbin/groupadd -r puppet
getent passwd puppet >/dev/null || /usr/sbin/useradd -r -g puppet -d /var/lib/puppet -s /bin/false -c "Puppet daemon" puppet
%service_add_pre puppetmaster.service

%pre
%service_add_pre puppet.service

%preun
%service_del_preun puppet.service

%postun
%service_del_postun puppet.service

%post
%service_add_post puppet.service
%fillup_only -n puppet

%preun server
%service_del_preun puppetmaster.service

%postun server
%service_del_postun puppetmaster.service

%post server
%service_add_post puppetmaster.service
%fillup_only -n puppetmaster
if [ -f /run/puppet_migrate ]; then
cat > %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release} << EOF
Warning: If you used puppet on openSUSE/SLE before be aware, that service is now
Warning: called puppemaster instead of puppetmasterd. This was done to comply
Warning: with upstream naming of the service and hopefully with everybody else
EOF
rm -f /run/puppet_migrate
fi

%files
%defattr(-,root,root,-)
%doc LICENSE README.* ChangeLog
%{_bindir}/puppet
%{_bindir}/extlookup2hiera
%{rb_vendorlibdir}/puppet/
%{rb_vendorlibdir}/hiera/
%{rb_vendorlibdir}/hiera_puppet.rb
%{rb_vendorlibdir}/puppet.rb
%{rb_vendorlibdir}/semver.rb
%{rb_vendorlibdir}/puppetx.rb
%{rb_vendorlibdir}/puppetx/
%dir %{_sysconfdir}/puppet
%attr(0750,%{name},%{name}) %dir %{_localstatedir}/lib/puppet
%attr(0750,%{name},%{name}) %dir %{_localstatedir}/log/puppet
# emacs-mode files
%{_datadir}/emacs/site-lisp/puppet-mode.el
# emacs by default does not own it so we must own it...
%dir %{_datadir}/emacs/site-lisp/site-start.d
%{_datadir}/emacs/site-lisp/site-start.d/puppet-mode-init.el
# vim support files
%{_datadir}/vim/site/ftdetect/puppet.vim
%{_datadir}/vim/site/syntax/puppet.vim
# puppet extensions
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/ext
%{_datadir}/%{name}/ext/autotest
%{_datadir}/%{name}/ext/cert_inspector
%{_datadir}/%{name}/ext/dbfix.sql
%{_datadir}/%{name}/ext/envpuppet
%{_datadir}/%{name}/ext/ldap
%{_datadir}/%{name}/ext/logcheck
%{_datadir}/%{name}/ext/nagios
%{_datadir}/%{name}/ext/puppetlisten
%{_datadir}/%{name}/ext/puppet-load.rb
%{_datadir}/%{name}/ext/puppet-test
%{_datadir}/%{name}/ext/pure_ruby_dsl
%{_datadir}/%{name}/ext/rack
%{_datadir}/%{name}/ext/regexp_nodes
%{_datadir}/%{name}/ext/upload_facts.rb
%{_datadir}/%{name}/ext/yaml_nodes.rb
#
%config %{_sysconfdir}/puppet/puppet.conf
%config %{_sysconfdir}/puppet/auth.conf
%{_mandir}/man?/*
%{_sbindir}/rcpuppet
%config %{_fwdefdir}/puppet
%{_unitdir}/system/puppet.service
%{_localstatedir}/adm/fillup-templates/sysconfig.puppet

%files server
%defattr(-, root, root, 0755)
%dir %attr(755,root,root)
%{_sbindir}/rcpuppetmaster
%config %{_fwdefdir}/puppetmasterd
%{_unitdir}/system/puppetmaster.service
%{_localstatedir}/adm/fillup-templates/sysconfig.puppetmaster

%changelog
openSUSE Build Service is sponsored by