%global git_tag %{?git_tag}%{!?git_tag:v1.35.1+rke2r1} %global k8s_minor %{?k8s_minor}%{!?k8s_minor:%(echo "%{git_tag}" | sed -E 's/^v([0-9]+\\.[0-9]+).*/\\1/')} %global is_default %{?is_default}%{!?is_default:1} %global debug_package %{nil} %global require_kernel_extra 0 %if 0%{?rhel} >= 10 %global require_kernel_extra 1 %endif %ifarch x86_64 %global relarch amd64 %endif %ifarch aarch64 %global relarch arm64 %endif %{!?relarch:%global relarch %{_arch}} # v1.35.1+rke2r1 => 1.35.1~rke2r1 %global rpmver %(echo "%{git_tag}" | sed -E 's/^v//' | sed -E 's/[+-]/~/g') %global release_url https://github.com/rancher/rke2/releases/download/%{git_tag} %if 0%{?is_default} %global pkgbase rke2 %else %global pkgbase rke2-%{k8s_minor} %endif Name: %{pkgbase} Version: %{rpmver} Release: %autorelease Summary: Rancher's enterprise-ready next-generation Kubernetes distribution License: Apache-2.0 URL: https://github.com/rancher/rke2 Source0: rke2-download-images.sh Source10: %{release_url}/rke2.linux-amd64.tar.gz Source20: %{release_url}/rke2.linux-arm64.tar.gz BuildRequires: systemd-rpm-macros Requires: %{name}-common = %{version}-%{release} %description %{summary}. %package common Summary: Common files for RKE2 Requires(post): systemd Requires: iptables Requires: curl %if %{require_kernel_extra} Requires: kernel-modules-extra %endif Provides: rke2-common = %{version}-%{release} Provides: rke2(stream) Conflicts: rke2(stream) %description common Common files shared by RKE2 server and agent components. %package server Summary: RKE2 server service Requires: %{name}-common = %{version}-%{release} Provides: rke2-server = %{version}-%{release} Conflicts: %{name}-agent %description server RKE2 server node service unit and defaults. %package agent Summary: RKE2 agent service Requires: %{name}-common = %{version}-%{release} Provides: rke2-agent = %{version}-%{release} Conflicts: %{name}-server %description agent RKE2 agent node service unit and defaults. %prep %setup -q -c -T %ifarch x86_64 tar -xzf %{SOURCE10} %endif %ifarch aarch64 tar -xzf %{SOURCE20} %endif %build # Release artifacts are prebuilt upstream. %install install -Dpm0755 bin/rke2 %{buildroot}%{_bindir}/rke2 install -Dpm0755 bin/rke2-killall.sh %{buildroot}%{_bindir}/rke2-killall.sh install -Dpm0755 bin/rke2-uninstall.sh %{buildroot}%{_bindir}/rke2-uninstall.sh install -Dpm0755 %{SOURCE0} %{buildroot}%{_bindir}/rke2-download-images.sh sed -i "s|@RKE2_GIT_TAG@|%{git_tag}|g" %{buildroot}%{_bindir}/rke2-download-images.sh install -Dpm0644 share/rke2/LICENSE.txt %{buildroot}%{_datadir}/rke2/LICENSE.txt install -Dpm0644 share/rke2/rke2-cis-sysctl.conf %{buildroot}%{_datadir}/rke2/rke2-cis-sysctl.conf install -d %{buildroot}%{_unitdir} sed -e 's|/usr/local/bin/rke2|%{_bindir}/rke2|g' \ -e 's|/usr/local/lib/systemd/system/|%{_unitdir}/|g' \ lib/systemd/system/rke2-server.service > %{buildroot}%{_unitdir}/rke2-server.service sed -e 's|/usr/local/bin/rke2|%{_bindir}/rke2|g' \ -e 's|/usr/local/lib/systemd/system/|%{_unitdir}/|g' \ lib/systemd/system/rke2-agent.service > %{buildroot}%{_unitdir}/rke2-agent.service install -d %{buildroot}%{_sysconfdir}/sysconfig install -m0644 lib/systemd/system/rke2-server.env %{buildroot}%{_sysconfdir}/sysconfig/rke2-server install -m0644 lib/systemd/system/rke2-agent.env %{buildroot}%{_sysconfdir}/sysconfig/rke2-agent install -d %{buildroot}%{_sysconfdir}/rancher/rke2 install -d %{buildroot}%{_sharedstatedir}/rancher/rke2 install -d %{buildroot}%{_sharedstatedir}/rancher/rke2/agent install -d %{buildroot}%{_localstatedir}/run/k3s %post server %systemd_post rke2-server.service %preun server %systemd_preun rke2-server.service %postun server %systemd_postun_with_restart rke2-server.service %post agent %systemd_post rke2-agent.service %preun agent %systemd_preun rke2-agent.service %postun agent %systemd_postun_with_restart rke2-agent.service %files %files common %license %{_datadir}/rke2/LICENSE.txt %{_bindir}/rke2 %{_bindir}/rke2-killall.sh %{_bindir}/rke2-uninstall.sh %{_bindir}/rke2-download-images.sh %{_datadir}/rke2/rke2-cis-sysctl.conf %dir %{_sysconfdir}/rancher/rke2 %dir %{_sharedstatedir}/rancher/rke2 %dir %{_sharedstatedir}/rancher/rke2/agent %dir %{_localstatedir}/run/k3s %files server %{_unitdir}/rke2-server.service %config(noreplace) %{_sysconfdir}/sysconfig/rke2-server %files agent %{_unitdir}/rke2-agent.service %config(noreplace) %{_sysconfdir}/sysconfig/rke2-agent %changelog %autochangelog