# Disable debug information package creation %define debug_package %{nil} # Define the Go Import Path %global goipath github.com/flightctl/flightctl # SELinux specifics %global selinuxtype targeted %define selinux_policyver 3.14.3-67 %define agent_relabel_files() \ semanage fcontext -a -t flightctl_agent_exec_t "/usr/bin/flightctl-agent" ; \ restorecon -v /usr/bin/flightctl-agent Name: flightctl Version: 0.4.0~83~g604e0d4 Release: 1.20250212172813978424.pr893.83.g604e0d4%{?dist} Summary: Flight Control service %gometa License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT URL: %{gourl} Source0: flightctl-0.4.0~83~g604e0d4.tar.gz BuildRequires: golang BuildRequires: make BuildRequires: git BuildRequires: openssl-devel Requires: openssl # Skip description for the main package since it won't be created %description # Main package is empty and not created. # cli sub-package %package cli Summary: Flight Control CLI %description cli flightctl is the CLI for controlling the Flight Control service. # agent sub-package %package agent Summary: Flight Control management agent Requires: flightctl-selinux = %{version} Requires: bootc %description agent The flightctl-agent package provides the management agent for the Flight Control fleet management service. %package selinux Summary: SELinux policies for the Flight Control management agent BuildRequires: selinux-policy >= %{selinux_policyver} BuildRequires: selinux-policy-devel >= %{selinux_policyver} BuildArch: noarch Requires: flightctl-agent = %{version} Requires: selinux-policy >= %{selinux_policyver} %description selinux The flightctl-selinux package provides the SELinux policy modules required by the Flight Control management agent. %prep %goprep -A %setup -q %{forgesetupargs} -n flightctl-0.4.0~83~g604e0d4 %build # if this is a buggy version of go we need to set GOPROXY as workaround # see https://github.com/golang/go/issues/61928 GOENVFILE=$(go env GOROOT)/go.env if [[ ! -f "${GOENVFILE}" ]]; then export GOPROXY='https://proxy.golang.org,direct' fi SOURCE_GIT_TAG=%{version} \ SOURCE_GIT_TREE_STATE=clean \ SOURCE_GIT_COMMIT=$(echo %{version} | awk -F'~g' '{print $2}') \ SOURCE_GIT_TAG_NO_V=%{version} \ make build-cli build-agent # SELinux modules build make --directory packaging/selinux %install mkdir -p %{buildroot}/usr/bin cp bin/flightctl %{buildroot}/usr/bin mkdir -p %{buildroot}/usr/lib/systemd/system mkdir -p %{buildroot}/%{_sharedstatedir}/flightctl mkdir -p %{buildroot}/usr/lib/flightctl/hooks.d/{afterupdating,beforeupdating,afterrebooting,beforerebooting} mkdir -p %{buildroot}/usr/lib/greenboot/check/required.d install -m 0755 packaging/greenboot/flightctl-agent-running-check.sh %{buildroot}/usr/lib/greenboot/check/required.d/20_check_flightctl_agent.sh cp bin/flightctl-agent %{buildroot}/usr/bin cp packaging/must-gather/flightctl-must-gather %{buildroot}/usr/bin cp packaging/hooks.d/afterupdating/00-default.yaml %{buildroot}/usr/lib/flightctl/hooks.d/afterupdating cp packaging/systemd/flightctl-agent.service %{buildroot}/usr/lib/systemd/system bin/flightctl completion bash > flightctl-completion.bash install -Dpm 0644 flightctl-completion.bash -t %{buildroot}/%{_datadir}/bash-completion/completions bin/flightctl completion fish > flightctl-completion.fish install -Dpm 0644 flightctl-completion.fish -t %{buildroot}/%{_datadir}/fish/vendor_completions.d/ bin/flightctl completion zsh > _flightctl-completion install -Dpm 0644 _flightctl-completion -t %{buildroot}/%{_datadir}/zsh/site-functions/ install -d %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype} install -m644 packaging/selinux/*.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype} rm -f licenses.list find . -type f -name LICENSE -or -name License | while read LICENSE_FILE; do echo "%{_datadir}/licenses/%{NAME}/${LICENSE_FILE}" >> licenses.list done mkdir -vp "%{buildroot}%{_datadir}/licenses/%{NAME}" cp LICENSE "%{buildroot}%{_datadir}/licenses/%{NAME}" mkdir -vp "%{buildroot}%{_docdir}/%{NAME}" for DOC in docs examples .markdownlint-cli2.yaml README.md; do cp -vr "${DOC}" "%{buildroot}%{_docdir}/%{NAME}/${DOC}" done %check %{buildroot}%{_bindir}/flightctl-agent version %pre selinux %selinux_relabel_pre -s %{selinuxtype} %post selinux %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/flightctl_agent.pp.bz2 %agent_relabel_files %postun selinux if [ $1 -eq 0 ]; then %selinux_modules_uninstall -s %{selinuxtype} flightctl_agent fi %posttrans selinux %selinux_relabel_post -s %{selinuxtype} # File listings # No %files section for the main package, so it won't be built %files cli -f licenses.list %{_bindir}/flightctl %license LICENSE %{_datadir}/bash-completion/completions/flightctl-completion.bash %{_datadir}/fish/vendor_completions.d/flightctl-completion.fish %{_datadir}/zsh/site-functions/_flightctl-completion %files agent -f licenses.list %license LICENSE %{_bindir}/flightctl-agent %{_bindir}/flightctl-must-gather /usr/lib/flightctl/hooks.d/afterupdating/00-default.yaml /usr/lib/systemd/system/flightctl-agent.service %{_sharedstatedir}/flightctl /usr/lib/greenboot/check/required.d/20_check_flightctl_agent.sh %{_docdir}/%{NAME}/* %{_docdir}/%{NAME}/.markdownlint-cli2.yaml %files selinux %{_datadir}/selinux/packages/%{selinuxtype}/flightctl_agent.pp.bz2 %changelog * Wed Feb 12 2025 Packit - 0.4.0~83~g604e0d4-1.20250212172813978424.pr893.83.g604e0d4 - EDM-1145: Return Status objects from service handlers (Frank A. Zdarsky) - EDM-1145: Add versioning to Status schema, replace Error with it (Frank A. Zdarsky) - NO-ISSUE: Specify only image without the tag (Celia Amador) - NO-ISSUE: Remove old references to grpc-management-endpoint and console API (Celia Amador) - NO-ISSUE: Fix datarace detected by unittests in console (Miguel Angel Ajo) - EDM-390: Update lifecycle status to decommissioned (Lily Sturmann) - EDM-1148: Bug fix for updating decommissioning Conditions agent-side (Lily Sturmann) - NO-ISSUE: Add flightctl.io prefix to resource versions (Avishay Traeger) - NO-ISSUE: Do not create NetworkPolicies when deploying on ACM (#890) (Rastislav Wagner) - NO-ISSUE: Clean unused API that is now handled via ws (Miguel Angel Ajo) - NO-ISSUE: Update the Agent API to support multiple consoles (Miguel Angel Ajo) - EDM-1141: In some cases the rollout fails but it is not reported with an error message and does not timeout (Ori Amizur) - NO-ISSUE: Pull CI RPM Builder image before using it (Miguel Angel Ajo) - EDM-973: device/hooks: skip run action execution if binary not found (#889) (Sam Batschelet) - EDM-1104: agent: improve rollback error handling and testing (Sam Batschelet) - NO-ISSUE: *: ensure response bodies are closed (Sam Batschelet) - EDM-611: device/applications: dont mark degraded on reboot if there are no apps (Sam Batschelet) - EDM-683: Normalize Device Labels into a Separate Table for Optimized Queries and Fast Distinct Label Retrieval (#845) (Assaf Albo) - EDM-1101: pty console support and selinux (Miguel Angel Ajo) - EDM-1094: API accepts decimal numbers for rollout policy percentages (Ori Amizur) - stam (Ori Amizur) - NO-ISSUE: Additional fields for kv ss and secrets job (#874) (Rastislav Wagner) - NO-ISSUE: Harmonize project names and decriptions (Frank A. Zdarsky) - EDM-390: Update device lifecycle status immediately upon user request (Lily Sturmann) - EDM-1087: Handle configuration changes (Ori Amizur) - EDM-925: T17: Do not only rely on client-side authorization (#834) (Gregory Shilin) - EDM-1014: Report versions of all software components phase 2 (#862) (Gregory Shilin) - EDM-1104: agent/rollback: set version failed before rollback (Sam Batschelet) - NO-ISSUE: test/agent: improve container workflow (Sam Batschelet) - EDM-1086: agent: improve logging during image pull (Sam Batschelet) - EDM-1000: agent/hooks: add success criteria when hooks fire to the logs (Sam Batschelet) - EDM-715: Wrap variables in script files in quotes (Dakota Crowder) - EDM-715: Remove WantedBy=default.target (Dakota Crowder) - EDM-715: Remove setting HOME in kv container (Dakota Crowder) - EDM-715: tag images with 0.4.0 (Dakota Crowder) - EDM-715: Configure standalone deployments for rootless podman (Dakota Crowder) - EDM-715: Add default.target to .container files so services start on system boot (Dakota Crowder) - EDM-715: Ensure directories are created before copying files (Dakota Crowder) - EDM-715: Configure podman for rootless setup (Dakota Crowder) - EDM-715: Explicitly define volumes for api, db, kv (Dakota Crowder) - EDM-500: EDM-999: agent: ensure rollback on failure (Sam Batschelet) - EDM-1096: Print num devices in list fleets only when available (Avishay Traeger) - NO-ISSUE: Use PostgreSQL 16 instead of 12 (#870) (Gregory Shilin) - NO-ISSUE: Add podManagementPolicy field to kv statefulset (rawagner) - EDM-1064: Add architecture documentation for rollout policies (Ori Amizur) * Fri Feb 7 2025 Miguel Angel Ajo - 0.4.0-1 - Add selinux support for console pty access * Mon Nov 4 2024 Miguel Angel Ajo - 0.3.0-1 - Move the Release field to -1 so we avoid auto generating packages with -5 all the time. * Wed Aug 21 2024 Sam Batschelet - 0.0.1-5 - Add must-gather script to provide a simple mechanism to collect agent debug * Wed Aug 7 2024 Sam Batschelet - 0.0.1-4 - Add basic greenboot support for failed flightctl-agent service * Wed Mar 13 2024 Ricardo Noriega - 0.0.1-3 - New specfile for both CLI and agent packages