Skip to content

Commit b1f3614

Browse files
committed
feat: prepare Fedora x86 build support
1 parent 8c58b89 commit b1f3614

14 files changed

Lines changed: 171 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2424
- Test suite expanded to cover monitor metric ranges and detector reporting
2525
- Repository metadata and packaging references aligned with the active GitHub organization
2626
- Privileged command flow now uses a dedicated allowlisted helper instead of raw `pkexec` command dispatch
27-
- GitHub release automation now targets Fedora `x86_64` and `aarch64` RPM publication from tagged builds
27+
- GitHub release automation now targets Fedora `i686`, `x86_64`, and `aarch64` RPM publication from tagged builds
2828

2929
### Fixed
3030
- Command execution path preserves stdout reliably
@@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3333
- Repository cleanup for stray macOS metadata files
3434
- PolicyKit metadata, helper install path, and packaged action identifiers are now consistent
3535
- Release packaging now validates tag/CMake/spec version alignment before publishing assets
36+
- Fedora `i686` builds now fail fast for unsupported NVIDIA driver management flows instead of attempting broken transactions
3637

3738
---
3839

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ message(STATUS "")
269269
message(STATUS "ro-control ${PROJECT_VERSION}")
270270
message(STATUS " Build type : ${CMAKE_BUILD_TYPE}")
271271
message(STATUS " C++ std : C++${CMAKE_CXX_STANDARD}")
272+
message(STATUS " CPU arch : ${CMAKE_SYSTEM_PROCESSOR}")
272273
message(STATUS " Qt version : ${Qt6_VERSION}")
273274
message(STATUS " Install to : ${CMAKE_INSTALL_PREFIX}")
274275
message(STATUS "")

README.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ ro-Control is a native KDE Plasma desktop application built with **C++20** and *
2222

2323
## Project Status
2424

25-
ro-Control is an active desktop utility for Fedora-first NVIDIA driver workflows.
25+
ro-Control is an active desktop utility for Fedora-first NVIDIA driver workflows,
26+
with Fedora KDE Desktop as the primary target environment.
2627
The current codebase focuses on:
2728

2829
- Native Qt/QML desktop UX instead of wrapper scripts
@@ -114,7 +115,7 @@ Additional PNG screenshots should be added before wider store distribution.
114115

115116
### RPM Package
116117

117-
Download the latest Fedora `.rpm` or the matching release bundle from [Releases](https://github.com/Project-Ro-ASD/ro-Control/releases), then choose the asset that matches your machine architecture (`x86_64` for 64-bit x86 systems or `aarch64` for ARM64 systems):
118+
Download the latest Fedora `.rpm` or the matching release bundle from [Releases](https://github.com/Project-Ro-ASD/ro-Control/releases), then choose the asset that matches your machine architecture (`i686` for 32-bit x86 systems, `x86_64` for 64-bit x86 systems, or `aarch64` for ARM64 systems):
118119

119120
```bash
120121
sudo dnf install ./ro-control-*.rpm
@@ -130,6 +131,16 @@ Fedora quick bootstrap:
130131
./scripts/fedora-bootstrap.sh
131132
```
132133

134+
Native Fedora KDE Desktop `i686` build:
135+
136+
```bash
137+
TARGET_ARCH=i686 ./scripts/fedora-bootstrap.sh
138+
```
139+
140+
`i686` builds are supported for compilation, UI, CLI, and monitoring. Fedora
141+
NVIDIA driver install/update/remove flows remain available only on `x86_64` and
142+
`aarch64`.
143+
133144
For Fedora-specific runtime notes, see [docs/FEDORA.md](docs/FEDORA.md).
134145

135146
### CLI Quick Examples

README.tr.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ro-Control, **C++20** ve **Qt6/QML** ile geliştirilmiş, Linux üzerinde NVIDIA
2222

2323
## Proje Durumu
2424

25-
ro-Control, Fedora odaklı NVIDIA sürücü iş akışları için aktif geliştirilen bir masaüstü yardımcı uygulamasıdır.
25+
ro-Control, Fedora odaklı NVIDIA sürücü iş akışları için aktif geliştirilen bir masaüstü yardımcı uygulamasıdır ve birincil hedef ortam Fedora KDE Desktop'tır.
2626
Mevcut kod tabanı özellikle şu alanlara odaklanır:
2727

2828
- Script sarmalayıcıları yerine yerel Qt/QML masaüstü deneyimi
@@ -101,7 +101,7 @@ Daha geniş mağaza / distro dağıtımı öncesinde PNG ekran görüntüleri ek
101101

102102
### RPM Paketi
103103

104-
[Releases](https://github.com/Project-Ro-ASD/ro-Control/releases) sayfasından sistem mimarinize uygun en güncel Fedora `.rpm` paketini veya release bundle dosyasını indirin (`x86_64` = 64-bit x86 sistemler, `aarch64` = ARM64 sistemler):
104+
[Releases](https://github.com/Project-Ro-ASD/ro-Control/releases) sayfasından sistem mimarinize uygun en güncel Fedora `.rpm` paketini veya release bundle dosyasını indirin (`i686` = 32-bit x86 sistemler, `x86_64` = 64-bit x86 sistemler, `aarch64` = ARM64 sistemler):
105105

106106
```bash
107107
sudo dnf install ./ro-control-*.rpm
@@ -117,6 +117,16 @@ Fedora hızlı kurulum:
117117
./scripts/fedora-bootstrap.sh
118118
```
119119

120+
Fedora KDE Desktop üzerinde native `i686` derleme:
121+
122+
```bash
123+
TARGET_ARCH=i686 ./scripts/fedora-bootstrap.sh
124+
```
125+
126+
`i686` build desteği derleme, arayüz, CLI ve izleme özelliklerini kapsar.
127+
Fedora NVIDIA sürücü kurulum/güncelleme/kaldırma akışları ise yalnızca
128+
`x86_64` ve `aarch64` build'lerde etkindir.
129+
120130
Fedora çalışma notları için [docs/FEDORA.md](docs/FEDORA.md) dosyasına bakın.
121131

122132
### CLI Hızlı Örnekler

docs/BUILDING.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Building ro-Control from Source
22

33
This guide covers building ro-Control from source on Linux systems with Qt 6 and CMake.
4+
The primary target is Fedora KDE Desktop, including native `i686`, `x86_64`,
5+
and `aarch64` builds.
46

57
---
68

@@ -23,6 +25,8 @@ This guide covers building ro-Control from source on Linux systems with Qt 6 and
2325
```
2426

2527
The script installs Fedora dependencies, builds the app, and runs tests by default.
28+
It auto-detects the host architecture and reports whether the resulting build is
29+
`i686`, `x86_64`, or `aarch64`.
2630
For Fedora-specific runtime notes, see [FEDORA.md](FEDORA.md).
2731

2832
---
@@ -43,6 +47,10 @@ sudo dnf install \
4347
polkit-devel
4448
```
4549

50+
On Fedora KDE Desktop `i686`, the application still builds normally, but the
51+
NVIDIA driver install/update/remove workflows are intentionally disabled at
52+
runtime because Fedora NVIDIA packages are not shipped for that architecture.
53+
4654
Runtime tools used by diagnostics and driver operations:
4755

4856
```bash
@@ -76,6 +84,16 @@ cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
7684
cmake --build build -j$(nproc)
7785
```
7886

87+
### Native Fedora KDE Desktop x86 (`i686`) build
88+
89+
```bash
90+
TARGET_ARCH=i686 ./scripts/fedora-bootstrap.sh
91+
```
92+
93+
For native 32-bit Fedora hosts this is just a convenience flag. On `x86_64`
94+
Fedora, prefer a native `i686` builder or chroot/container when you need a real
95+
32-bit RPM output.
96+
7997
### Refresh translations (recommended before release)
8098

8199
```bash

docs/FEDORA.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Fedora Run Guide
22

3-
This guide is focused on running `ro-control` on Fedora Workstation/Spin systems.
3+
This guide is focused on running `ro-control` on Fedora KDE Desktop / Fedora Spin systems.
44

55
## 1) Bootstrap (recommended)
66

@@ -15,6 +15,7 @@ Optional flags via environment variables:
1515
```bash
1616
ENABLE_TESTS=0 BUILD_TYPE=Debug ./scripts/fedora-bootstrap.sh
1717
INSTALL_AFTER_BUILD=1 INSTALL_PREFIX=/usr ./scripts/fedora-bootstrap.sh
18+
TARGET_ARCH=i686 ./scripts/fedora-bootstrap.sh
1819
```
1920

2021
## 2) Manual dependency install (equivalent)
@@ -50,6 +51,11 @@ ctest --test-dir build --output-on-failure
5051
./build/ro-control
5152
```
5253

54+
If you are preparing a Fedora KDE Desktop `i686` build, use a native `i686`
55+
environment when possible. The bootstrap script labels the target architecture,
56+
but NVIDIA driver management remains disabled on `i686` because Fedora does not
57+
ship the required RPM Fusion NVIDIA stack there.
58+
5359
## 4) Install (optional)
5460

5561
```bash
@@ -61,6 +67,8 @@ sudo cmake --install build
6167
- `ro-control` invokes privileged operations through `pkexec`.
6268
- For proprietary NVIDIA flow, the app enables RPM Fusion and installs
6369
`akmod-nvidia` using `dnf`.
70+
- NVIDIA driver management is supported on Fedora `x86_64` and `aarch64`
71+
builds. `i686` builds are supported for compilation and monitoring only.
6472
- A reboot is required after install/update/remove flows.
6573
- On Secure Boot systems, kernel module signing policy may still require manual steps.
6674

docs/RELEASE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Use this checklist for every production release.
2727
## 4. Packaging
2828

2929
- [ ] `packaging/rpm/ro-control.spec` release/version fields are correct.
30-
- [ ] Build Fedora RPM artifacts successfully for both `x86_64` and `aarch64`.
30+
- [ ] Build Fedora RPM artifacts successfully for `i686`, `x86_64`, and `aarch64`.
3131
- [ ] Verify installation and launch on the target desktop environment.
3232
- [ ] Verify `man ro-control` and shell completions install correctly.
3333
- [ ] Confirm release tag version matches `CMakeLists.txt` and `packaging/rpm/ro-control.spec`.
@@ -36,7 +36,7 @@ Use this checklist for every production release.
3636

3737
- [ ] Create annotated tag: `vX.Y.Z`.
3838
- [ ] Push tag to trigger release workflow.
39-
- [ ] Verify GitHub Release includes source archives, one `x86_64` RPM, one `aarch64` RPM, per-arch release bundles, and one source RPM.
39+
- [ ] Verify GitHub Release includes source archives, `i686`, `x86_64`, and `aarch64` RPMs, per-arch release bundles, and one source RPM.
4040
- [ ] Verify the attached checksum and RPM metadata files are present.
4141

4242
## 6. Post-release

packaging/rpm/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This directory contains the RPM recipe for ro-Control.
77
- Produce a reproducible RPM from a release tarball
88
- Require translation tooling so localized builds are never emitted partially
99
- Run the upstream Qt test suite during `%check`
10-
- Publish GitHub Release RPMs for both `x86_64` and `aarch64`
10+
- Publish GitHub Release RPMs for `i686`, `x86_64`, and `aarch64`
1111

1212
## Source archive expectations
1313

@@ -58,8 +58,10 @@ Fish so command discovery works out of the box on release systems.
5858
The GitHub release workflow builds:
5959

6060
- source archives (`.tar.gz`, `.zip`)
61+
- one Fedora binary RPM for `i686`
6162
- one Fedora binary RPM for `x86_64`
6263
- one Fedora binary RPM for `aarch64`
64+
- one Fedora release bundle for `i686`
6365
- one Fedora release bundle for `x86_64`
6466
- one Fedora release bundle for `aarch64`
6567
- one source RPM

packaging/rpm/ro-control.spec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Summary: Smart NVIDIA driver manager and system monitor
99
License: GPL-3.0-or-later
1010
URL: https://github.com/Project-Ro-ASD/ro-Control
1111
Source0: %{name}-%{version}.tar.gz
12-
ExclusiveArch: x86_64 aarch64
12+
ExclusiveArch: i686 x86_64 aarch64
1313

1414
BuildRequires: cmake
1515
BuildRequires: gcc-c++
@@ -77,6 +77,6 @@ tar -xzf %{SOURCE0} --strip-components=1
7777

7878
%changelog
7979
* Sun Mar 22 2026 ro-Control Maintainers <noreply@github.com> - 0.1.0-1
80-
- Prepare first GitHub Release RPMs for x86_64 and aarch64
80+
- Prepare first GitHub Release RPMs for i686, x86_64, and aarch64
8181
- Add explicit Fedora runtime command dependencies and recommendations
8282
- Align RPM release automation with tagged versioned source archives

scripts/fedora-bootstrap.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ GENERATOR="${GENERATOR:-Ninja}"
88
ENABLE_TESTS="${ENABLE_TESTS:-1}"
99
INSTALL_AFTER_BUILD="${INSTALL_AFTER_BUILD:-0}"
1010
INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local}"
11+
TARGET_ARCH="${TARGET_ARCH:-$(uname -m)}"
1112

1213
build_reqs=(
1314
cmake
@@ -30,6 +31,23 @@ runtime_tools=(
3031
kmod
3132
)
3233

34+
case "$TARGET_ARCH" in
35+
i386|i486|i586|i686|x86)
36+
TARGET_ARCH="i686"
37+
;;
38+
x86_64|amd64)
39+
TARGET_ARCH="x86_64"
40+
;;
41+
aarch64|arm64)
42+
TARGET_ARCH="aarch64"
43+
;;
44+
esac
45+
46+
echo "Detected Fedora target architecture: $TARGET_ARCH"
47+
if [[ "$TARGET_ARCH" == "i686" ]]; then
48+
echo "Preparing a 32-bit x86 Fedora build. NVIDIA driver management remains unavailable on i686."
49+
fi
50+
3351
echo "[1/4] Installing Fedora build dependencies..."
3452
sudo dnf install -y "${build_reqs[@]}"
3553

0 commit comments

Comments
 (0)