Skip to content

Commit e921196

Browse files
committed
fix: limit release outputs to supported rpm artifacts
1 parent 49b90e3 commit e921196

8 files changed

Lines changed: 56 additions & 97 deletions

File tree

.github/workflows/release.yml

Lines changed: 10 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,13 @@ jobs:
7777
ARCHIVE_PREFIX: ${{ needs.metadata.outputs.archive_prefix }}
7878
run: |
7979
git archive --format=tar.gz --prefix="${ARCHIVE_PREFIX}/" --output="${ARCHIVE_PREFIX}.tar.gz" "${GITHUB_SHA}"
80-
git archive --format=zip --prefix="${ARCHIVE_PREFIX}/" --output="${ARCHIVE_PREFIX}.zip" "${GITHUB_SHA}"
8180
8281
- name: Upload source archives
8382
uses: actions/upload-artifact@v4
8483
with:
8584
name: ro-control-source-${{ needs.metadata.outputs.version }}
8685
path: |
8786
${{ needs.metadata.outputs.archive_prefix }}.tar.gz
88-
${{ needs.metadata.outputs.archive_prefix }}.zip
8987
9088
rpm:
9189
name: Build Fedora RPM (${{ matrix.arch }})
@@ -150,6 +148,7 @@ jobs:
150148
find ~/rpmbuild/RPMS -maxdepth 2 -type f -name "ro-control-[0-9]*.${RPM_ARCH}.rpm" -exec cp {} dist/rpm/ \;
151149
152150
if [[ "${RPM_ARCH}" == "x86_64" ]]; then
151+
find ~/rpmbuild/RPMS -maxdepth 2 -type f -name "ro-control-common-[0-9]*.noarch.rpm" -exec cp {} dist/rpm/ \;
153152
cp ~/rpmbuild/SRPMS/*.src.rpm dist/rpm/
154153
fi
155154
@@ -179,7 +178,12 @@ jobs:
179178
RPM_ARCH: ${{ matrix.arch }}
180179
run: |
181180
RPM_FILE="$(find dist/rpm -maxdepth 1 -type f -name "*.${RPM_ARCH}.rpm" | head -n1)"
182-
dnf install -y --nogpgcheck "${RPM_FILE}"
181+
if [[ "${RPM_ARCH}" == "x86_64" ]]; then
182+
NOARCH_FILE="$(find dist/rpm -maxdepth 1 -type f -name "*.noarch.rpm" | head -n1)"
183+
dnf install -y --nogpgcheck "${RPM_FILE}" "${NOARCH_FILE}"
184+
else
185+
dnf install -y --nogpgcheck "${RPM_FILE}"
186+
fi
183187
184188
INSTALLED_VERSION="$(ro-control --version | tr -d '\n')"
185189
if [[ "${INSTALLED_VERSION}" != "${VERSION}" ]]; then
@@ -199,43 +203,12 @@ jobs:
199203
sha256sum * > "ro-control-${VERSION}-${RPM_ARCH}-SHA256SUMS.txt"
200204
)
201205
202-
- name: Create per-arch release bundle
203-
env:
204-
VERSION: ${{ needs.metadata.outputs.version }}
205-
RPM_ARCH: ${{ matrix.arch }}
206-
run: |
207-
mkdir -p dist/release
208-
209-
RPM_FILE="$(find dist/rpm -maxdepth 1 -type f -name "*.${RPM_ARCH}.rpm" | head -n1)"
210-
INFO_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-info.txt"
211-
REQUIRES_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-requires.txt"
212-
FILES_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-files.txt"
213-
CHECKSUM_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-SHA256SUMS.txt"
214-
BUNDLE_DIR="dist/release/ro-control-${VERSION}-${RPM_ARCH}"
215-
BUNDLE_NAME="ro-control-${VERSION}-${RPM_ARCH}-fedora42.tar.gz"
216-
217-
if [[ -z "${RPM_FILE}" ]]; then
218-
echo "Failed to locate built ${RPM_ARCH} RPM for release bundling." >&2
219-
exit 1
220-
fi
221-
222-
mkdir -p "${BUNDLE_DIR}"
223-
cp "${RPM_FILE}" "${BUNDLE_DIR}/"
224-
cp "${INFO_FILE}" "${BUNDLE_DIR}/"
225-
cp "${REQUIRES_FILE}" "${BUNDLE_DIR}/"
226-
cp "${FILES_FILE}" "${BUNDLE_DIR}/"
227-
cp "${CHECKSUM_FILE}" "${BUNDLE_DIR}/"
228-
229-
tar -C dist/release -czf "dist/release/${BUNDLE_NAME}" "ro-control-${VERSION}-${RPM_ARCH}"
230-
rm -rf "${BUNDLE_DIR}"
231-
232206
- name: Upload RPM artifacts
233207
uses: actions/upload-artifact@v4
234208
with:
235209
name: ro-control-rpm-${{ matrix.arch }}-${{ needs.metadata.outputs.version }}
236210
path: |
237211
dist/rpm/*
238-
dist/release/*
239212
240213
release:
241214
name: Create GitHub Release
@@ -257,12 +230,11 @@ jobs:
257230
target_commitish: ${{ github.sha }}
258231
generate_release_notes: true
259232
files: |
260-
dist/ro-control-${{ needs.metadata.outputs.version }}.tar.gz
261-
dist/ro-control-${{ needs.metadata.outputs.version }}.zip
262-
dist/*.rpm
233+
dist/*.x86_64.rpm
234+
dist/*.aarch64.rpm
235+
dist/*.noarch.rpm
263236
dist/*.src.rpm
264237
dist/*SHA256SUMS.txt
265238
dist/*-requires.txt
266239
dist/*-info.txt
267240
dist/*-files.txt
268-
dist/*-fedora42.tar.gz

README.md

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,10 @@ Additional PNG screenshots should be added before wider store distribution.
115115

116116
### RPM Package
117117

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):
118+
Download the latest Fedora `.rpm` 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). Shared assets are shipped in the companion `noarch` RPM:
119119

120120
```bash
121-
sudo dnf install ./ro-control-*.rpm
121+
sudo dnf install ./ro-control-*.<arch>.rpm ./ro-control-common-*.noarch.rpm
122122
```
123123

124124
### Building from Source
@@ -131,15 +131,7 @@ Fedora quick bootstrap:
131131
./scripts/fedora-bootstrap.sh
132132
```
133133

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`.
134+
GitHub Releases publish only `x86_64`, `aarch64`, `noarch`, and `src` RPM artifacts.
143135

144136
For Fedora-specific runtime notes, see [docs/FEDORA.md](docs/FEDORA.md).
145137

README.tr.md

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,10 @@ 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 (`i686` = 32-bit x86 sistemler, `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 indirin (`x86_64` = 64-bit x86 sistemler, `aarch64` = ARM64 sistemler). Ortak dosyalar eşlik eden `noarch` RPM içinde gelir:
105105

106106
```bash
107-
sudo dnf install ./ro-control-*.rpm
107+
sudo dnf install ./ro-control-*.<arch>.rpm ./ro-control-common-*.noarch.rpm
108108
```
109109

110110
### Kaynaktan Derleme
@@ -117,15 +117,7 @@ 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.
120+
GitHub Releases yalnızca `x86_64`, `aarch64`, `noarch` ve `src` RPM çıktıları yayınlar.
129121

130122
Fedora çalışma notları için [docs/FEDORA.md](docs/FEDORA.md) dosyasına bakın.
131123

docs/BUILDING.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +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.
4+
The primary target is Fedora KDE Desktop, with official release artifacts for
5+
`x86_64`, `aarch64`, `noarch`, and `src`.
66

77
---
88

@@ -26,7 +26,7 @@ and `aarch64` builds.
2626

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

3232
---
@@ -47,9 +47,8 @@ sudo dnf install \
4747
polkit-devel
4848
```
4949

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.
50+
Official release outputs do not include `i686`. Driver install/update/remove
51+
workflows are supported on `x86_64` and `aarch64` release builds.
5352

5453
Runtime tools used by diagnostics and driver operations:
5554

@@ -84,15 +83,14 @@ cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
8483
cmake --build build -j$(nproc)
8584
```
8685

87-
### Native Fedora KDE Desktop x86 (`i686`) build
86+
### Official Fedora Release Outputs
8887

89-
```bash
90-
TARGET_ARCH=i686 ./scripts/fedora-bootstrap.sh
91-
```
88+
The GitHub release pipeline publishes only:
9289

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.
90+
- `x86_64` RPM
91+
- `aarch64` RPM
92+
- `noarch` RPM
93+
- `src` RPM
9694

9795
### Refresh translations (recommended before release)
9896

docs/FEDORA.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ 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
1918
```
2019

2120
## 2) Manual dependency install (equivalent)
@@ -51,10 +50,8 @@ ctest --test-dir build --output-on-failure
5150
./build/ro-control
5251
```
5352

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.
53+
Official GitHub release outputs are limited to `x86_64`, `aarch64`, `noarch`,
54+
and `src` RPM artifacts.
5855

5956
## 4) Install (optional)
6057

@@ -68,7 +65,7 @@ sudo cmake --install build
6865
- For proprietary NVIDIA flow, the app enables RPM Fusion and installs
6966
`akmod-nvidia` using `dnf`.
7067
- NVIDIA driver management is supported on Fedora `x86_64` and `aarch64`
71-
builds. `i686` builds are supported for compilation and monitoring only.
68+
builds.
7269
- A reboot is required after install/update/remove flows.
7370
- On Secure Boot systems, kernel module signing policy may still require manual steps.
7471

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 `i686`, `x86_64`, and `aarch64`.
30+
- [ ] Build Fedora RPM artifacts successfully for `x86_64`, `aarch64`, `noarch`, and `src`.
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, `i686`, `x86_64`, and `aarch64` RPMs, per-arch release bundles, and one source RPM.
39+
- [ ] Verify GitHub Release includes only `x86_64`, `aarch64`, `noarch`, and `src` RPM outputs.
4040
- [ ] Verify the attached checksum and RPM metadata files are present.
4141

4242
## 6. Post-release

packaging/rpm/README.md

Lines changed: 5 additions & 11 deletions
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 `i686`, `x86_64`, and `aarch64`
10+
- Publish GitHub Release RPMs for `x86_64`, `aarch64`, `noarch`, and `src`
1111

1212
## Source archive expectations
1313

@@ -55,19 +55,13 @@ Fish so command discovery works out of the box on release systems.
5555

5656
## Release automation
5757

58-
The GitHub release workflow builds:
58+
The GitHub release workflow publishes only:
5959

60-
- source archives (`.tar.gz`, `.zip`)
61-
- one Fedora binary RPM for `i686`
6260
- one Fedora binary RPM for `x86_64`
6361
- one Fedora binary RPM for `aarch64`
64-
- one Fedora release bundle for `i686`
65-
- one Fedora release bundle for `x86_64`
66-
- one Fedora release bundle for `aarch64`
67-
- one source RPM
62+
- one Fedora shared-assets RPM for `noarch`
63+
- one source RPM (`src`)
6864

6965
Each architecture job also performs a smoke install with `dnf install` and
7066
verifies that `ro-control --version` matches the tagged release version before
71-
publishing assets. Each release bundle contains the architecture-specific RPM,
72-
package metadata, dependency list, and checksum manifest for easier download
73-
from the GitHub Releases page.
67+
publishing assets.

packaging/rpm/ro-control.spec

Lines changed: 19 additions & 5 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: i686 x86_64 aarch64
12+
ExclusiveArch: x86_64 aarch64
1313

1414
BuildRequires: cmake
1515
BuildRequires: gcc-c++
@@ -23,9 +23,19 @@ BuildRequires: qt6-qtwayland-devel
2323
BuildRequires: kf6-qqc2-desktop-style
2424
BuildRequires: polkit-devel
2525

26+
Requires: %{name}-common = %{version}-%{release}
2627
Requires: qt6-qtbase
2728
Requires: qt6-qtdeclarative
2829
Requires: qt6-qtwayland
30+
31+
%description
32+
ro-Control is a Qt6/KDE Plasma desktop application that helps users
33+
manage NVIDIA drivers and monitor core system metrics.
34+
35+
%package common
36+
Summary: Shared assets for the ro-Control desktop application
37+
BuildArch: noarch
38+
2939
Requires: kf6-qqc2-desktop-style
3040
Requires: polkit
3141
Requires: /usr/bin/dnf
@@ -40,9 +50,10 @@ Recommends: /usr/sbin/akmods
4050
Recommends: /usr/bin/dracut
4151
Recommends: /usr/sbin/grubby
4252

43-
%description
44-
ro-Control is a Qt6/KDE Plasma desktop application that helps users
45-
manage NVIDIA drivers and monitor core system metrics.
53+
%description common
54+
ro-Control common ships the desktop entry, helper script, shell completions,
55+
metadata, icons, PolicyKit action, and documentation shared by all supported
56+
CPU architectures.
4657

4758
%prep
4859
%autosetup -c -T -n %{name}-%{version}
@@ -61,9 +72,11 @@ tar -xzf %{SOURCE0} --strip-components=1
6172
%ctest --output-on-failure
6273

6374
%files
75+
%{_bindir}/ro-control
76+
77+
%files common
6478
%license LICENSE
6579
%doc README.md README.tr.md CHANGELOG.md
66-
%{_bindir}/ro-control
6780
%{_datadir}/applications/io.github.projectroasd.rocontrol.desktop
6881
%{_datadir}/man/man1/ro-control.1*
6982
%{_datadir}/metainfo/io.github.projectroasd.rocontrol.metainfo.xml
@@ -80,6 +93,7 @@ tar -xzf %{SOURCE0} --strip-components=1
8093
- Fix installed helper path resolution for privileged operations on system installs
8194
- Activate saved KDE-friendly interface preferences and theme switching in the UI
8295
- Harden Fedora CI and release validation for metadata and RPM packaging
96+
- Limit published RPM outputs to x86_64, aarch64, src, and noarch artifacts only
8397

8498
* Sun Mar 22 2026 ro-Control Maintainers <noreply@github.com> - 0.1.0-1
8599
- Prepare first GitHub Release RPMs for i686, x86_64, and aarch64

0 commit comments

Comments
 (0)