diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef845cc..21fdf50 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,6 +98,7 @@ jobs: echo "Failed to read project version from CMakeLists.txt" >&2 exit 1 fi + echo "VERSION=${VERSION}" >> "${GITHUB_ENV}" ARCHIVE_BASENAME="ro-control-${VERSION}" mkdir -p ~/rpmbuild/SOURCES ~/rpmbuild/SPECS STAGE_DIR="$(mktemp -d)" diff --git a/docs/BUILDING.md b/docs/BUILDING.md index e1d6fc3..b5cc393 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -36,6 +36,7 @@ sudo dnf install \ gcc-c++ \ ninja-build \ qt6-qtbase-devel \ + qt6-qtbase-private-devel \ qt6-qtdeclarative-devel \ qt6-qttools-devel \ qt6-qtwayland-devel \ @@ -43,6 +44,10 @@ sudo dnf install \ polkit-devel ``` +If `kf6-qqc2-desktop-style` is not available in your enabled repositories, you +can skip it for local builds. The Fedora bootstrap script already treats it as +optional. + Runtime tools used by diagnostics and driver operations: ```bash diff --git a/docs/FEDORA.md b/docs/FEDORA.md index 2698f43..afb651c 100644 --- a/docs/FEDORA.md +++ b/docs/FEDORA.md @@ -28,6 +28,7 @@ sudo dnf install -y \ gcc-c++ \ ninja-build \ qt6-qtbase-devel \ + qt6-qtbase-private-devel \ qt6-qtdeclarative-devel \ qt6-qttools-devel \ qt6-qtwayland-devel \ @@ -35,6 +36,10 @@ sudo dnf install -y \ polkit-devel ``` +On some Fedora setups, `kf6-qqc2-desktop-style` is not exposed by the currently +enabled repositories. The bootstrap script treats it as optional and continues +without it. + Runtime tools used by diagnostics and driver workflows: ```bash diff --git a/scripts/fedora-bootstrap.sh b/scripts/fedora-bootstrap.sh index 28aa179..3b24b9e 100755 --- a/scripts/fedora-bootstrap.sh +++ b/scripts/fedora-bootstrap.sh @@ -9,16 +9,16 @@ ENABLE_TESTS="${ENABLE_TESTS:-1}" INSTALL_AFTER_BUILD="${INSTALL_AFTER_BUILD:-0}" INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local}" -build_reqs=( +required_build_reqs=( cmake extra-cmake-modules gcc-c++ ninja-build qt6-qtbase-devel + qt6-qtbase-private-devel qt6-qtdeclarative-devel qt6-qttools-devel qt6-qtwayland-devel - kf6-qqc2-desktop-style polkit-devel ) @@ -28,10 +28,61 @@ runtime_tools=( pciutils mokutil kmod + lm_sensors + procps-ng +) + +optional_build_reqs=( + kf6-qqc2-desktop-style ) -echo "[1/4] Installing Fedora build dependencies..." -sudo dnf install -y "${build_reqs[@]}" +has_dnf_package() { + local package="$1" + dnf repoquery --quiet --whatprovides "$package" >/dev/null 2>&1 +} + +install_packages() { + local label="$1" + shift + + if (($# == 0)); then + return 0 + fi + + echo "$label" + sudo dnf install -y "$@" +} + +collect_available_packages() { + local -n requested_packages_ref="$1" + local -n available_packages_ref="$2" + local -n missing_packages_ref="$3" + + local package + for package in "${requested_packages_ref[@]}"; do + if has_dnf_package "$package"; then + available_packages_ref+=( "$package" ) + else + missing_packages_ref+=( "$package" ) + fi + done +} + +available_optional_build_reqs=() +missing_optional_build_reqs=() +collect_available_packages optional_build_reqs available_optional_build_reqs missing_optional_build_reqs + +install_packages "[1/4] Installing Fedora build dependencies..." "${required_build_reqs[@]}" + +if ((${#available_optional_build_reqs[@]} > 0)); then + install_packages "[1.1/4] Installing optional Fedora desktop integration packages..." \ + "${available_optional_build_reqs[@]}" +fi + +if ((${#missing_optional_build_reqs[@]} > 0)); then + printf '[info] Optional Fedora packages not available in enabled repositories: %s\n' \ + "${missing_optional_build_reqs[*]}" +fi echo "[2/4] Installing runtime utilities used by diagnostics/driver workflows..." sudo dnf install -y "${runtime_tools[@]}"