7777 - arch : aarch64
7878 runs_on : ubuntu-24.04-arm
7979 container :
80- image : fedora:latest
80+ image : fedora:43
8181
8282 steps :
8383 - name : Checkout repository
@@ -99,12 +99,13 @@ jobs:
9999 gcc-c++ \
100100 ninja-build \
101101 qt6-qtbase-devel \
102- qt6-qtbase-private-devel \
103102 qt6-qtdeclarative-devel \
104103 qt6-qttools-devel \
105104 qt6-qtwayland-devel \
106105 kf6-qqc2-desktop-style \
107- polkit-devel
106+ polkit-devel \
107+ desktop-file-utils \
108+ appstream
108109
109110 - name : Build RPM artifacts
110111 env :
@@ -115,24 +116,53 @@ jobs:
115116 mkdir -p ~/rpmbuild/SOURCES ~/rpmbuild/SPECS dist/rpm
116117 cp "dist/${ARCHIVE_PREFIX}.tar.gz" "${HOME}/rpmbuild/SOURCES/"
117118 cp packaging/rpm/ro-control.spec "${HOME}/rpmbuild/SPECS/ro-control.spec"
118- FEDORA_VERSION="$(rpm -E %fedora)"
119- RPM_PATTERN="ro-control-[0-9]*.${RPM_ARCH}.rpm"
119+ FEDORA_VERSION=43
120+ MAIN_RPM_PATTERN="ro-control-[0-9]*.${RPM_ARCH}.rpm"
121+ COMMON_RPM_PATTERN="ro-control-common-[0-9]*.noarch.rpm"
120122
121123 rpmbuild -ba "${HOME}/rpmbuild/SPECS/ro-control.spec" \
122124 --define "_topdir ${HOME}/rpmbuild" \
123125 --define "upstream_version ${VERSION}" \
124126 --define "dist .fc${FEDORA_VERSION}"
125127
126- RPM_FILE="$(find ~/rpmbuild/RPMS -maxdepth 2 -type f -name "${RPM_PATTERN}" | head -n1)"
127- if [[ -z "${RPM_FILE}" ]]; then
128- echo "Failed to find built ${RPM_ARCH} RPM." >&2
128+ MAIN_RPM_FILE="$(find ~/rpmbuild/RPMS -maxdepth 2 -type f -name "${MAIN_RPM_PATTERN}" | head -n1)"
129+ if [[ -z "${MAIN_RPM_FILE}" ]]; then
130+ echo "Failed to find built ${RPM_ARCH} main RPM." >&2
131+ exit 1
132+ fi
133+
134+ cp "${MAIN_RPM_FILE}" dist/rpm/
135+
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/
139+ fi
140+
141+ - name : Validate metadata and RPM dependency surface
142+ env :
143+ RPM_ARCH : ${{ matrix.arch }}
144+ run : |
145+ desktop-file-validate data/icons/io.github.projectroasd.rocontrol.desktop
146+ appstreamcli validate --no-net data/icons/io.github.projectroasd.rocontrol.metainfo.xml
147+
148+ MAIN_RPM_FILE="$(find dist/rpm -maxdepth 1 -type f -name "ro-control-*.${RPM_ARCH}.rpm" | head -n1)"
149+ COMMON_RPM_FILE="$(find dist/rpm -maxdepth 1 -type f -name 'ro-control-common-*.noarch.rpm' | head -n1)"
150+
151+ rpm -qpR "${MAIN_RPM_FILE}" | tee /tmp/ro-control.requires
152+ if grep -E 'Qt_6\.10|PRIVATE_API' /tmp/ro-control.requires; then
153+ echo "Forbidden Qt private ABI dependency detected." >&2
154+ exit 1
155+ fi
156+
157+ rpm -qpl "${MAIN_RPM_FILE}" | grep -Fx '/usr/bin/ro-control'
158+ if [[ -n "${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
129160 exit 1
130161 fi
131- cp "${RPM_FILE}" "dist/rpm/ro-control-${RPM_ARCH}.rpm"
132162
133163 - name : Upload RPM artifacts
134164 uses : actions/upload-artifact@v4
135165 with :
136166 name : ro-control-${{ matrix.arch }}-rpm
137167 path : |
138- dist/rpm/ro-control-${{ matrix.arch }}.rpm
168+ dist/rpm/*
0 commit comments