Skip to content

Latest commit

 

History

History
213 lines (153 loc) · 4.6 KB

File metadata and controls

213 lines (153 loc) · 4.6 KB

Building ro-Control from Source

This guide covers building ro-Control from source on Linux systems with Qt 6 and CMake. The primary target is Fedora KDE Desktop, with official release artifacts for x86_64, aarch64, noarch, and src.


Requirements

Component Minimum Version Check
GCC 13+ gcc --version
CMake 3.22+ cmake --version
Qt 6.6+ rpm -q qt6-qtbase-devel
Qt Linguist Tools Required for release-grade builds rpm -q qt6-qttools-devel
Ninja Any ninja --version (optional, faster builds)

Fedora Quick Bootstrap

./scripts/fedora-bootstrap.sh

The script installs Fedora dependencies, builds the app, and runs tests by default. It auto-detects the host architecture and reports whether the resulting build is x86_64 or aarch64. For Fedora-specific runtime notes, see FEDORA.md.


Install Dependencies

sudo dnf install \
  cmake \
  extra-cmake-modules \
  gcc-c++ \
  ninja-build \
  qt6-qtbase-devel \
  qt6-qtdeclarative-devel \
  qt6-qttools-devel \
  qt6-qtwayland-devel \
  kf6-qqc2-desktop-style \
  polkit-devel

Official release outputs do not include i686. Driver install/update/remove workflows are supported on x86_64 and aarch64 release builds.

Runtime tools used by diagnostics and driver operations:

sudo dnf install dnf polkit pciutils mokutil kmod lm_sensors procps-ng

Clone the Repository

git clone https://github.com/Project-Ro-ASD/ro-Control.git
cd ro-Control

Build

Debug Build (for development)

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j$(nproc)

Release Build

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

Official Fedora Release Outputs

The GitHub release pipeline publishes only:

  • x86_64 RPM
  • aarch64 RPM
  • noarch RPM
  • src RPM

GitHub Actions RPM artifact build

For branch builds (without creating a GitHub Release), run the RPM Artifacts workflow. It uploads .rpm artifacts for:

  • x86_64
  • aarch64

Refresh translations (recommended before release)

lupdate src -ts i18n/ro-control_en.ts i18n/ro-control_tr.ts
cmake --build build --target ro-control_lrelease

Run

# From the repository root
./build/ro-control

CLI examples:

./build/ro-control help
./build/ro-control version
./build/ro-control status
./build/ro-control diagnostics --json
./build/ro-control driver install --proprietary --accept-license
./build/ro-control driver update

Note: Driver install/remove operations require PolicyKit authentication. The UI will prompt you automatically.

After cmake --install, the CLI integration also installs:

  • man ro-control
  • Bash completion: share/bash-completion/completions/ro-control
  • Zsh completion: share/zsh/site-functions/_ro-control
  • Fish completion: share/fish/vendor_completions.d/ro-control.fish

Install System-Wide

sudo cmake --install build

This installs:

  • Binary -> /usr/local/bin/ro-control
  • Privileged helper -> /usr/local/libexec/ro-control-helper
  • Desktop entry -> /usr/local/share/applications/
  • Icons -> /usr/local/share/icons/
  • AppStream metadata -> /usr/local/share/metainfo/
  • PolicyKit policy -> /usr/local/share/polkit-1/actions/

Build with Tests

cmake -S . -B build -G Ninja -DBUILD_TESTS=ON
cmake --build build -j$(nproc)
ctest --test-dir build --output-on-failure

Uninstall

make uninstall is not currently defined in this project. Use your package manager or the install manifest to remove a local install.


Common Issues

qt6-qtdeclarative-devel not found

sudo dnf install qt6-qtdeclarative-devel

CMake can't find Qt6

# Make sure Qt6 is installed, then specify path manually:
cmake .. -DCMAKE_PREFIX_PATH=/usr/lib64/cmake/Qt6

Build fails with C++20 errors Ensure GCC 13 or newer is installed:

sudo dnf install gcc-c++
gcc --version  # Should be 13+

Translations do not update

rm -rf build/.qt build/CMakeFiles
cmake -S . -B build
lupdate src -ts i18n/ro-control_en.ts i18n/ro-control_tr.ts
cmake --build build --target ro-control_lrelease

Contributing

After making changes, always verify the build passes before submitting a PR:

cmake --build build -j$(nproc)
ctest --test-dir build --output-on-failure

See CONTRIBUTING.md for the full contribution guide.