## START: Set by rpmautospec
## (rpmautospec version 0.6.5)
## RPMAUTOSPEC: autochangelog
## END: Set by rpmautospec

Name:           puppetserver
Version:        8.6.2
Release:        1%{?dist}
Summary:        Server component for Puppet agents
License:        Apache-2.0
URL:            https://puppet.com
Source0:        https://downloads.puppetlabs.com/puppet/%{name}-%{version}.tar.gz
Source1:        https://downloads.puppetlabs.com/puppet/%{name}-%{version}.tar.gz.asc
Source2:        RPM-GPG-KEY-puppet-20250406
Source3:        puppetserver.sysusers
Source4:        puppetserver.service
Source5:        puppetserver

Patch0:         puppetserver-bin-paths.patch

BuildArch: noarch

BuildRequires: gnupg2
BuildRequires: systemd-rpm-macros
# For the ruby_vendorlibdir
BuildRequires: ruby-devel
%{?sysusers_requires_compat}

Requires: jre-17-headless
Requires: puppet >= 8
Requires: rubygem(puppetserver-ca)

%description
Server component

%prep
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%autosetup -p1

%install
install -p -D -m 0644 puppet-server-release.jar %{buildroot}%{_datadir}/%{name}/puppet-server-release.jar
install -p -D -m 0644 ext/system-config/services.d/bootstrap.cfg %{buildroot}%{_datadir}/%{name}/services.d/bootstrap.cfg

install -p -D -m 0644 ext/ezbake.manifest %{buildroot}%{_docdir}/%{name}/ezbake.manifest

install -p -D -m 0755 ext/bin/puppetserver %{buildroot}%{_bindir}/%{name}

install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/%{name}.conf
install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/%{name}.service
install -p -D -m 0755 %{SOURCE5} %{buildroot}%{_libexecdir}/%{name}/%{name}

mkdir -p -m 0755 %{buildroot}%{_sysconfdir}/%{name}/ca
install -p -D -m 0644 ext/config/conf.d/auth.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/auth.conf
install -p -D -m 0644 ext/config/conf.d/ca.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/ca.conf
install -p -D -m 0644 ext/config/conf.d/global.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/global.conf
install -p -D -m 0644 ext/config/conf.d/metrics.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/metrics.conf
install -p -D -m 0644 ext/config/conf.d/puppetserver.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/puppetserver.conf
install -p -D -m 0644 ext/config/conf.d/web-routes.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/web-routes.conf
install -p -D -m 0644 ext/config/conf.d/webserver.conf %{buildroot}%{_sysconfdir}/%{name}/conf.d/webserver.conf

install -p -D -m 0644 ext/config/request-logging.xml %{buildroot}%{_sysconfdir}/%{name}/request-logging.xml
install -p -D -m 0644 ext/config/logback.xml %{buildroot}%{_sysconfdir}/%{name}/logback.xml

install -p -D -m 0644 ext/config/services.d/ca.cfg %{buildroot}%{_sysconfdir}/%{name}/services.d/ca.cfg

mkdir -p -m 0755 %{buildroot}%{_sharedstatedir}/%{name}

# Fix up paths to FHS locations
# TODO: strip /opt/puppetlabs from gem-path:
#gem-path: [${jruby-puppet.gem-home}, "/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems", "/opt/puppetlabs/puppet/lib/ruby/vendor_gems"]
sed -i \
    -e 's|/etc/puppetlabs/code|%{_sysconfdir}/puppet/code|g' \
    -e 's|/etc/puppetlabs/puppetserver|%{_sysconfdir}/%{name}|g' \
    -e 's|/etc/puppetlabs/puppet|%{_sysconfdir}/puppet|g' \
    -e 's|/opt/puppetlabs/puppet/lib/ruby/vendor_ruby|%{ruby_vendorlibdir}|g' \
    -e 's|/opt/puppetlabs/server/data/puppetserver/jruby-gems|/usr/share/gems|g' \
    -e 's|/opt/puppetlabs/server/data/puppetserver|%{_sharedstatedir}/%{name}|g' \
    -e 's|/var/log/puppetlabs/puppetserver|%{_localstatedir}/log/%{name}|g' \
    -e 's|/var/run/puppetlabs/puppetserver|%{_rundir}/%{name}|g' \
    %{buildroot}%{_sysconfdir}/%{name}/conf.d/global.conf \
    %{buildroot}%{_sysconfdir}/%{name}/conf.d/puppetserver.conf \
    %{buildroot}%{_sysconfdir}/%{name}/conf.d/webserver.conf \
    %{buildroot}%{_sysconfdir}/%{name}/logback.xml \
    %{buildroot}%{_sysconfdir}/%{name}/request-logging.xml

%pre
%sysusers_create_compat %{SOURCE3}

%post
%systemd_post %{name}.service

%preun
%systemd_preun %{name}.service

%postun
%systemd_postun_with_restart %{name}.service

%files
%{_datadir}/%{name}/puppet-server-release.jar
%{_datadir}/%{name}/services.d/bootstrap.cfg

# TODO: LICENSE
%{_docdir}/%{name}/ezbake.manifest

%{_bindir}/%{name}

%{_sysusersdir}/%{name}.conf
%{_unitdir}/%{name}.service
%{_libexecdir}/%{name}/%{name}

%dir %attr(0750,puppet,puppet) %{_sharedstatedir}/%{name}

%dir %attr(0750,puppet,puppet) %{_sysconfdir}/%{name}/ca
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/auth.conf
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/ca.conf
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/global.conf
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/metrics.conf
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/puppetserver.conf
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/web-routes.conf
%config(noreplace) %{_sysconfdir}/%{name}/conf.d/webserver.conf
%config(noreplace) %{_sysconfdir}/%{name}/logback.xml
%config(noreplace) %{_sysconfdir}/%{name}/request-logging.xml
%config(noreplace) %{_sysconfdir}/%{name}/services.d/ca.cfg

%changelog
## START: Generated by rpmautospec
* Fri Aug 09 2024 Ewoud Kohl van Wijngaarden <ewoud@kohlvanwijngaarden.nl> - 8.6.2-1
- Initial packaging
## END: Generated by rpmautospec