Initial commit on c10s

Resolves: RHELMISC-20422
This commit is contained in:
Sayan Paul 2025-12-22 12:02:40 +05:30
parent 2ec2f99330
commit d5dd6dddc4
3 changed files with 179 additions and 0 deletions

2
.gitignore vendored
View File

@ -0,0 +1,2 @@
/greenboot-rs-0.16.1-vendor-patched.tar.xz
/greenboot-rs-0.16.1.tar.gz

175
greenboot-rs.spec Normal file
View File

@ -0,0 +1,175 @@
%global pkgname greenboot
# Tests require privileged operations (grub edits, fs remount) and cannot run in mock.
# Tests are executed in external CI instead.
%bcond check 0
%bcond bundled_rust_deps %{defined rhel}
Name: greenboot-rs
Version: 0.16.1
Release: 0%{?dist}
Summary: Generic Health Check Framework for systemd
# Aggregated license of statically linked dependencies as per %%cargo_license_summary
License: BSD-3-Clause AND ISC AND MIT AND Unicode-DFS-2016 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Unlicense OR MIT)
URL: https://github.com/fedora-iot/greenboot-rs
Source0: %{url}/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: %{name}-%{version}-vendor-patched.tar.xz
ExcludeArch: %{ix86}
%if %{with bundled_rust_deps}
BuildRequires: rust-toolset
%else
BuildRequires: cargo-rpm-macros
%endif
BuildRequires: systemd-rpm-macros
%description
Greenboot is a generic health check framework for systemd allowing
the use of healthchecks to check the state of the system post
upgrade to ensure the system is in a known-good state and to allow
automated rollback actions if it's not.
%package -n %{pkgname}
Summary: %{summary}
%{?systemd_requires}
Requires: systemd >= 240
Requires: rpm-ostree
Requires: bootupd
Requires: pam >= 1.4.0
Recommends: openssh
%description -n %{pkgname}
%{description}.
%package -n %{pkgname}-default-health-checks
Summary: Series of optional and curated health checks
License: BSD-3-Clause
Requires: %{pkgname} = %{version}-%{release}
Requires: util-linux
Requires: jq
%description -n %{pkgname}-default-health-checks
%{description}.
This package adds some default healthchecks for greenboot.
%prep
%if %{with bundled_rust_deps}
%autosetup -p1 -a1 -n %{name}-%{version}
%cargo_prep -v vendor
%else
%autosetup -n %{name}-%{version}
%cargo_prep
%generate_buildrequires
%cargo_generate_buildrequires
%endif
%build
%cargo_build
%{cargo_license_summary}
%{cargo_license} > LICENSE.dependencies
%if %{with bundled_rust_deps}
%cargo_vendor_manifest
%endif
%install
mkdir -p %{buildroot}%{_libexecdir}
mkdir -p %{buildroot}%{_libexecdir}/%{pkgname}
install -Dpm0755 target/release/greenboot %{buildroot}%{_libexecdir}/%{pkgname}/%{pkgname}
install -Dpm0644 -t %{buildroot}%{_unitdir} usr/lib/systemd/system/*.service
install -Dpm0644 -t %{buildroot}%{_unitdir} usr/lib/systemd/system/*.target
mkdir -p %{buildroot}%{_exec_prefix}/lib/motd.d/
mkdir -p %{buildroot}%{_libexecdir}/%{pkgname}
install -Dpm0644 -t %{buildroot}%{_sysconfdir}/%{pkgname} etc/greenboot/greenboot.conf
install -D -t %{buildroot}%{_prefix}/lib/bootupd/grub2-static/configs.d grub2/08_greenboot.cfg
mkdir -p %{buildroot}%{_sysconfdir}/%{pkgname}/check/required.d
mkdir %{buildroot}%{_sysconfdir}/%{pkgname}/check/wanted.d
mkdir %{buildroot}%{_sysconfdir}/%{pkgname}/green.d
mkdir %{buildroot}%{_sysconfdir}/%{pkgname}/red.d
mkdir -p %{buildroot}%{_prefix}/lib/%{pkgname}/check/required.d
mkdir %{buildroot}%{_prefix}/lib/%{pkgname}/check/wanted.d
mkdir %{buildroot}%{_prefix}/lib/%{pkgname}/green.d
mkdir %{buildroot}%{_prefix}/lib/%{pkgname}/red.d
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_tmpfilesdir}
install -DpZm 0755 usr/lib/greenboot/check/required.d/* %{buildroot}%{_prefix}/lib/%{pkgname}/check/required.d
install -DpZm 0755 usr/lib/greenboot/check/wanted.d/* %{buildroot}%{_prefix}/lib/%{pkgname}/check/wanted.d
install -DpZm 0644 usr/lib/systemd/system/greenboot-healthcheck.service.d/10-network-online.conf %{buildroot}%{_unitdir}/greenboot-healthcheck.service.d/10-network-online.conf
%post -n %{pkgname}
%systemd_post greenboot-healthcheck.service
%systemd_post greenboot-set-rollback-trigger.service
%systemd_post greenboot-success.target
%preun -n %{pkgname}
%systemd_preun greenboot-healthcheck.service
%systemd_preun greenboot-set-rollback-trigger.service
%systemd_preun greenboot-success.target
%postun -n %{pkgname}
%systemd_postun greenboot-healthcheck.service
%systemd_postun greenboot-set-rollback-trigger.service
%systemd_postun greenboot-success.target
%files -n %{pkgname}
%license LICENSE LICENSE.dependencies
%doc README.md
%dir %{_libexecdir}/%{pkgname}
%{_libexecdir}/%{pkgname}/%{pkgname}
%{_unitdir}/greenboot-healthcheck.service
%{_unitdir}/greenboot-set-rollback-trigger.service
%{_unitdir}/greenboot-success.target
%config(noreplace) %{_sysconfdir}/%{pkgname}/greenboot.conf
%{_prefix}/lib/bootupd/grub2-static/configs.d/08_greenboot.cfg
%dir %{_prefix}/lib/%{pkgname}
%dir %{_prefix}/lib/%{pkgname}/check
%dir %{_prefix}/lib/%{pkgname}/check/required.d
%dir %{_prefix}/lib/%{pkgname}/check/wanted.d
%dir %{_prefix}/lib/%{pkgname}/green.d
%dir %{_prefix}/lib/%{pkgname}/red.d
%dir %{_sysconfdir}/%{pkgname}
%dir %{_sysconfdir}/%{pkgname}/check
%dir %{_sysconfdir}/%{pkgname}/check/required.d
%dir %{_sysconfdir}/%{pkgname}/check/wanted.d
%dir %{_sysconfdir}/%{pkgname}/green.d
%dir %{_sysconfdir}/%{pkgname}/red.d
%files -n %{pkgname}-default-health-checks
%dir %{_unitdir}/greenboot-healthcheck.service.d
%{_prefix}/lib/%{pkgname}/check/wanted.d/01_update_platforms_check.sh
%{_prefix}/lib/%{pkgname}/check/required.d/02_watchdog.sh
%{_prefix}/lib/%{pkgname}/check/required.d/01_repository_dns_check.sh
%{_unitdir}/greenboot-healthcheck.service.d/10-network-online.conf
%changelog
* Wed Dec 03 2025 Sayan Paul <saypaul@redhat.com> - 0.16.1
- Ensure rollback trigger runs before systemd-update-done and only on updates
- Log the correct system type when reporting rollback decisions
- Fix CI/tests (Ansible callback config, GI deps) to keep gating green
- Refresh Packit release config for Fedora delivery
* Wed Oct 15 2025 Sayan Paul <saypaul@redhat.com> - 0.16.0-6
- Fix OS type detection
- Do not remount /boot superblock/filesystem readonly
* Mon Sep 01 2025 Mario Cattamo <mcattamo@redhat.com> - 0.16.0-5
- Handle vendor packages in Centos-Stream
* Mon Aug 25 2025 Sayan Paul <saypaul@redhat.com> - 0.16.0-4
- Adhering to rust packaging best practices
* Fri Aug 15 2025 Peter Robinson <pbrobinson@fedoraproject.org> - 0.16.0-3
- Various spec file cleanups
* Fri Jul 25 2025 Paul Whalen <pwhalen@fedoraproject.org> - 0.16.0-2
- Update src to greenboot-rs, binaries remain greenboot
- Obsoletes/Conflicts for bash greenboot, Provides greenboot
* Thu Jul 24 2025 Sayan Paul <saypaul@redhat.com> - 0.16.0-1
- Initial Package
- Switched to native Fedora dependencies, removing vendoring.

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (greenboot-rs-0.16.1-vendor-patched.tar.xz) = e6ddd814528241dd40d7d2d71969e2892b495436dbc0d997f22597bb075b6a695fa1b6ee7c1bed04ce70b102c172b34203353f6a8921391decff451d936292db
SHA512 (greenboot-rs-0.16.1.tar.gz) = 014e64a86fed83649e180d4b6c5702a688e6901e6bc3d5e1a5923ee0371b44bbbbb21588e57ea6a83cd032226de91611303e2db6994e55ceee472078bbdd24cc