Skip to content

Commit 515f255

Browse files
committed
fix: ship single-file RPMs per architecture
1 parent 9242857 commit 515f255

4 files changed

Lines changed: 19 additions & 79 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -136,40 +136,28 @@ jobs:
136136
- name: Verify Fedora 43 RPM compatibility
137137
run: |
138138
MAIN_RPM="$(find ~/rpmbuild/RPMS -maxdepth 2 -type f -name 'ro-control-*.x86_64.rpm' | head -n1)"
139-
COMMON_RPM="$(find ~/rpmbuild/RPMS -maxdepth 2 -type f -name 'ro-control-common-*.noarch.rpm' | head -n1)"
140139
141140
if [[ -z "${MAIN_RPM}" ]]; then
142141
echo "Failed to locate ro-control x86_64 RPM." >&2
143142
exit 1
144143
fi
145144
146-
if [[ -z "${COMMON_RPM}" ]]; then
147-
echo "Failed to locate ro-control-common noarch RPM." >&2
148-
exit 1
149-
fi
150-
151145
rpm -qpR "${MAIN_RPM}" | tee /tmp/ro-control.requires
152146
if grep -E 'PRIVATE_API' /tmp/ro-control.requires; then
153147
echo "Forbidden Qt private ABI dependency detected." >&2
154148
exit 1
155149
fi
156150
157151
rpm -qpl "${MAIN_RPM}" | grep -Fx '/usr/bin/ro-control'
158-
if rpm -qpl "${COMMON_RPM}" | grep -Fx '/usr/bin/ro-control'; then
159-
echo "/usr/bin/ro-control must not be shipped by ro-control-common." >&2
160-
exit 1
161-
fi
162152
163153
cp "${MAIN_RPM}" /tmp/ro-control-x86_64.rpm
164-
cp "${COMMON_RPM}" /tmp/ro-control-common-noarch.rpm
165154
166155
- name: Install and smoke-test RPMs
167156
run: |
168157
MAIN_RPM=/tmp/ro-control-x86_64.rpm
169-
COMMON_RPM=/tmp/ro-control-common-noarch.rpm
170158
171159
dnf clean all
172-
dnf -y --refresh --setopt=install_weak_deps=False install "${MAIN_RPM}" "${COMMON_RPM}"
160+
dnf -y --refresh --setopt=install_weak_deps=False install "${MAIN_RPM}"
173161
174162
rpm -q ro-control
175163
command -v ro-control

.github/workflows/release.yml

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ jobs:
161161
cp packaging/rpm/ro-control.spec "${HOME}/rpmbuild/SPECS/ro-control.spec"
162162
FEDORA_VERSION=43
163163
MAIN_RPM_PATTERN="ro-control-[0-9]*.${RPM_ARCH}.rpm"
164-
COMMON_RPM_PATTERN="ro-control-common-[0-9]*.noarch.rpm"
165164
166165
rpmbuild -ba "${HOME}/rpmbuild/SPECS/ro-control.spec" \
167166
--define "_topdir ${HOME}/rpmbuild" \
@@ -175,15 +174,6 @@ jobs:
175174
fi
176175
cp "${MAIN_RPM_FILE}" "dist/rpm/ro-control-${RPM_ARCH}.rpm"
177176
178-
COMMON_RPM_FILE="$(find ~/rpmbuild/RPMS -maxdepth 2 -type f -name "${COMMON_RPM_PATTERN}" | head -n1)"
179-
if [[ -n "${COMMON_RPM_FILE}" ]]; then
180-
cp "${COMMON_RPM_FILE}" "dist/rpm/ro-control-common-noarch.rpm"
181-
fi
182-
183-
if [[ "${RPM_ARCH}" == "x86_64" ]]; then
184-
cp ~/rpmbuild/SRPMS/*.src.rpm dist/rpm/
185-
fi
186-
187177
- name: Verify package metadata
188178
env:
189179
VERSION: ${{ needs.metadata.outputs.version }}
@@ -204,27 +194,18 @@ jobs:
204194
fi
205195
grep -Fx '/usr/bin/ro-control' "dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-files.txt"
206196
207-
- name: Verify main/common package split
197+
- name: Verify package payload
208198
env:
209199
RPM_ARCH: ${{ matrix.arch }}
210200
run: |
211201
MAIN_RPM_FILE="dist/rpm/ro-control-${RPM_ARCH}.rpm"
212-
COMMON_RPM_FILE="dist/rpm/ro-control-common-noarch.rpm"
213202
214203
if [[ ! -f "${MAIN_RPM_FILE}" ]]; then
215204
echo "Main ro-control RPM is missing." >&2
216205
exit 1
217206
fi
218-
219-
if [[ ! -f "${COMMON_RPM_FILE}" ]]; then
220-
echo "ro-control-common noarch RPM is missing." >&2
221-
exit 1
222-
fi
223-
224-
if rpm -qpl "${COMMON_RPM_FILE}" | grep -Fx '/usr/bin/ro-control'; then
225-
echo "/usr/bin/ro-control must not be shipped by ro-control-common." >&2
226-
exit 1
227-
fi
207+
rpm -qpl "${MAIN_RPM_FILE}" | grep -Fx '/usr/share/metainfo/io.github.projectroasd.rocontrol.metainfo.xml'
208+
rpm -qpl "${MAIN_RPM_FILE}" | grep -Fx '/usr/share/applications/io.github.projectroasd.rocontrol.desktop'
228209
229210
- name: Validate desktop metadata
230211
run: |
@@ -238,19 +219,13 @@ jobs:
238219
RPM_ARCH: ${{ matrix.arch }}
239220
run: |
240221
RPM_FILE="dist/rpm/ro-control-${RPM_ARCH}.rpm"
241-
NOARCH_FILE="dist/rpm/ro-control-common-noarch.rpm"
242222
243223
if [[ ! -f "${RPM_FILE}" ]]; then
244224
echo "Failed to locate built ${RPM_ARCH} RPM for smoke testing." >&2
245225
exit 1
246226
fi
247227
248-
if [[ ! -f "${NOARCH_FILE}" ]]; then
249-
echo "Failed to locate ro-control-common noarch RPM for smoke testing." >&2
250-
exit 1
251-
fi
252-
253-
dnf install -y --nogpgcheck "${RPM_FILE}" "${NOARCH_FILE}"
228+
dnf install -y --nogpgcheck "${RPM_FILE}"
254229
255230
INSTALLED_VERSION="$(ro-control --version | tr -d '\n')"
256231
if [[ "${INSTALLED_VERSION}" != "${VERSION}" ]]; then
@@ -279,7 +254,7 @@ jobs:
279254
with:
280255
name: ro-control-rpm-${{ matrix.arch }}-${{ needs.metadata.outputs.version }}
281256
path: |
282-
dist/rpm/*
257+
dist/rpm/ro-control-${{ matrix.arch }}.rpm
283258
284259
release:
285260
name: Create GitHub Release
@@ -303,9 +278,3 @@ jobs:
303278
files: |
304279
dist/*x86_64.rpm
305280
dist/*aarch64.rpm
306-
dist/*noarch.rpm
307-
dist/*.src.rpm
308-
dist/*SHA256SUMS.txt
309-
dist/*-requires.txt
310-
dist/*-info.txt
311-
dist/*-files.txt

.github/workflows/rpm-artifacts.yml

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ jobs:
118118
cp packaging/rpm/ro-control.spec "${HOME}/rpmbuild/SPECS/ro-control.spec"
119119
FEDORA_VERSION=43
120120
MAIN_RPM_PATTERN="ro-control-[0-9]*.${RPM_ARCH}.rpm"
121-
COMMON_RPM_PATTERN="ro-control-common-[0-9]*.noarch.rpm"
122121
123122
rpmbuild -ba "${HOME}/rpmbuild/SPECS/ro-control.spec" \
124123
--define "_topdir ${HOME}/rpmbuild" \
@@ -133,11 +132,6 @@ jobs:
133132
134133
cp "${MAIN_RPM_FILE}" "dist/rpm/ro-control-${RPM_ARCH}.rpm"
135134
136-
COMMON_RPM_FILE="$(find ~/rpmbuild/RPMS -maxdepth 2 -type f -name "${COMMON_RPM_PATTERN}" | head -n1)"
137-
if [[ -n "${COMMON_RPM_FILE}" ]]; then
138-
cp "${COMMON_RPM_FILE}" "dist/rpm/ro-control-common-noarch.rpm"
139-
fi
140-
141135
- name: Validate metadata and RPM dependency surface
142136
env:
143137
RPM_ARCH: ${{ matrix.arch }}
@@ -146,7 +140,6 @@ jobs:
146140
appstreamcli validate --no-net data/icons/io.github.projectroasd.rocontrol.metainfo.xml
147141
148142
MAIN_RPM_FILE="dist/rpm/ro-control-${RPM_ARCH}.rpm"
149-
COMMON_RPM_FILE="dist/rpm/ro-control-common-noarch.rpm"
150143
151144
rpm -qpR "${MAIN_RPM_FILE}" | tee /tmp/ro-control.requires
152145
if grep -E 'PRIVATE_API' /tmp/ro-control.requires; then
@@ -155,14 +148,10 @@ jobs:
155148
fi
156149
157150
rpm -qpl "${MAIN_RPM_FILE}" | grep -Fx '/usr/bin/ro-control'
158-
if [[ -f "${COMMON_RPM_FILE}" ]] && rpm -qpl "${COMMON_RPM_FILE}" | grep -Fx '/usr/bin/ro-control'; then
159-
echo "/usr/bin/ro-control must only be shipped by the main RPM." >&2
160-
exit 1
161-
fi
162151
163152
- name: Upload RPM artifacts
164153
uses: actions/upload-artifact@v7
165154
with:
166155
name: ro-control-${{ matrix.arch }}-rpm
167156
path: |
168-
dist/rpm/*
157+
dist/rpm/ro-control-${{ matrix.arch }}.rpm

packaging/rpm/ro-control.spec

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
Name: ro-control
55
Version: %{upstream_version}
6-
Release: 1%{?dist}
6+
Release: 2%{?dist}
77
Summary: Smart NVIDIA driver manager and system monitor
88

99
License: GPL-3.0-or-later
10+
Vendor: Project Ro ASD
11+
Packager: Project Ro ASD <noreply@github.com>
1012
URL: https://github.com/Project-Ro-ASD/ro-Control
1113
Source0: %{name}-%{version}.tar.gz
1214
ExclusiveArch: x86_64 aarch64
@@ -22,20 +24,10 @@ BuildRequires: qt6-qtwayland-devel
2224
BuildRequires: kf6-qqc2-desktop-style
2325
BuildRequires: polkit-devel
2426

25-
Requires: %{name}-common = %{version}-%{release}
2627
Requires: qt6-qtbase
2728
Requires: qt6-qtdeclarative
2829
Requires: qt6-qtwayland
2930

30-
%description
31-
ro-Control is a Qt6/KDE Plasma desktop application that helps users
32-
manage NVIDIA drivers and monitor core system metrics.
33-
34-
%package common
35-
Summary: Shared assets for the ro-Control desktop application
36-
BuildArch: noarch
37-
Obsoletes: %{name} < 0.2.1-1
38-
3931
Requires: kf6-qqc2-desktop-style
4032
Requires: polkit
4133
Requires: /usr/bin/dnf
@@ -50,10 +42,9 @@ Recommends: /usr/sbin/akmods
5042
Recommends: /usr/bin/dracut
5143
Recommends: /usr/sbin/grubby
5244

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.
45+
%description
46+
ro-Control is a Qt6/KDE Plasma desktop application that helps users
47+
manage NVIDIA drivers and monitor core system metrics.
5748

5849
%prep
5950
%autosetup -c -T -n %{name}-%{version}
@@ -74,10 +65,8 @@ export QT_QUICK_CONTROLS_STYLE=Basic
7465
%ctest --output-on-failure
7566

7667
%files
77-
%{_bindir}/ro-control
78-
79-
%files common
8068
%license LICENSE
69+
%{_bindir}/ro-control
8170
%{_datadir}/applications/io.github.projectroasd.rocontrol.desktop
8271
%{_datadir}/man/man1/ro-control.1*
8372
%{_datadir}/metainfo/io.github.projectroasd.rocontrol.metainfo.xml
@@ -92,6 +81,11 @@ export QT_QUICK_CONTROLS_STYLE=Basic
9281
%{_datadir}/polkit-1/actions/io.github.ProjectRoASD.rocontrol.policy
9382

9483
%changelog
84+
* Sun May 10 2026 ro-Control Maintainers <noreply@github.com> - 1.1.0-2
85+
- Merge runtime assets back into the main architecture RPM
86+
- Make each release RPM installable on its own without a companion noarch package
87+
- Keep AppStream, desktop entry, icons, helper, and policy metadata in the main package
88+
9589
* Sun May 10 2026 ro-Control Maintainers <noreply@github.com> - 1.1.0-1
9690
- Target Fedora 43 for CI, RPM validation, and release builds
9791
- Validate RPM compatibility for x86_64 and aarch64 with store metadata checks

0 commit comments

Comments
 (0)