aurora/build_scripts/base/20-tests.sh
renner b2d6f3cfb3
refactor: simplify checking for enabled 3rd party repos (#2931)
* refactor: simplify checking for enabled 3rd party repos

We are generally no longer doing the dnf enable/disable dance (except
for the nvidia install script) because we are vendoring the .repo files
which simplifies things a bit.

Also I think that the move to checking what is allowed instead of
checking what is not allowed makes more sense anyway.

resolves: https://github.com/ublue-os/aurora/issues/2854

[1] 1e4d10b9ac/build_files/nvidia/nvidia-install.sh

* get openh264 from negativo

Our base image [1] can't legally include this from fedora-cisco-openh264
repo. Comparing the spec files for Fedora [2] and Negativo [3], they
seem to be built with the same build flags, so they should not have any
differing functionality. The fedora-cisco-openh264 repo is currently
enabled (which is not the case for F44 images) because our repo
validation script broke due to the move to /usr [4].

We are already shipping various other codecs on the system, including
mesa, they get more irrelevant each day but we should have this.

I don't know why exactly but for some reason we now have a stray
/var/log/dnf5.log which makes bootc container lint fail.

[1] 54e811f17a/common.yaml (L144)
[2] cd15228484/f/openh264.spec
[3] dfac89f533/openh264.spec
[4] https://fedoraproject.org/wiki/Changes/RelocateRpmRepoConfigsToUsr
2026-09-27 05:34:43 +00:00

171 lines
5.2 KiB
Bash
Executable file

#!/usr/bin/bash
echo "::group:: ===$(basename "$0")==="
set -eoux pipefail
# We need to have the ublue-os signing keys on the image!
# Published images without these keys won't be able to pull ghcr.io/ublue-os/*
# and can therefore not update!
# https://github.com/ublue-os/main/blob/963609eaf01f7c2bb1a76821fe6d0ec269d2df25/build_files/install.sh#L56
# https://github.com/ublue-os/packages/tree/1f77c7e7faa9ebad120609a10d79e0412376c3b7/packages/ublue-os-signing/src
KEY1=$(jq -r '.transports.docker."ghcr.io/ublue-os"[0].keyPaths[0]' /etc/containers/policy.json)
BACKUP_KEY=$(jq -r '.transports.docker."ghcr.io/ublue-os"[0].keyPaths[1]' /etc/containers/policy.json)
KEY1_SHA256="af78ecfda6eb21c35195af3739341715e9cfc3f2f5911dd9c10b0670547bf6e8"
BACKUP_KEY_SHA256="b723467015ba562d40b4645c98c51c65d8254bb59444f6e9962debcfe2315da0"
RPM_OSTREED_CONF_SHA256="f48bb2359e9c31ed464127048138993e2e058bb648e5fd9ba7b7386a2b5eb174"
echo "${RPM_OSTREED_CONF_SHA256} /etc/rpm-ostreed.conf" | sha256sum -c -
echo "${KEY1_SHA256} ${KEY1}" | sha256sum -c -
echo "${BACKUP_KEY_SHA256} ${BACKUP_KEY}" | sha256sum -c -
# branding related changes
test -f /usr/share/icons/hicolor/scalable/distributor-logo.svg
test -f /usr/share/pixmaps/system-logo-white.png
test -f /usr/share/icons/hicolor/scalable/apps/start-here.svg
test -f /usr/share/pixmaps/fedora-logo.svg
test -d /usr/share/plasma/look-and-feel/dev.getaurora.aurora.desktop
test -f /usr/share/backgrounds/aurora/aurora-wallpaper-10/contents/images/3840x2160.jxl
test -f /usr/share/wallpapers/aurora-wallpaper-10/contents/images/3840x2160.jxl
test -L /usr/share/backgrounds/default.jxl
xmllint --noout \
/usr/share/backgrounds/default.xml
# If this file is not on the image bazaar will automatically be removed from users systems :(
# See: https://docs.flatpak.org/en/latest/flatpak-command-reference.html#flatpak-preinstall
test -f /usr/share/flatpak/preinstall.d/bazaar.preinstall
# Make sure this garbage never makes it to an image
test -f /usr/lib/systemd/system/flatpak-add-fedora-repos.service && false
# Is flathub enabled by default?
test -f /etc/flatpak/remotes.d/flathub.flatpakrepo
# Make sure to not pull in the bazzite one
rpm -q plasma-setup --qf "%{RELEASE}" | grep -q aurora
test -f /usr/share/doc/aurora/aurora.pdf
test -f /usr/share/homebrew.tar.zst
desktop-file-validate \
/usr/share/applications/dev.getaurora.discussions.desktop \
/usr/share/applications/dev.getaurora.boot-to-windows.desktop \
/usr/share/applications/dev.getaurora.offline-docs.desktop \
/usr/share/applications/dev.getaurora.documentation.desktop \
/usr/share/applications/dev.getaurora.system-update.desktop
# Check for KDE Plasma version mismatch
# Fedora Repos have gotten the newer one, trying to upgrade
KDE_VER="$(rpm -q --qf '%{VERSION}' plasma-desktop)"
# package picked by failures in the past
KSCREEN_VERS="$(rpm -q --qf '%{VERSION}' kscreen)"
KWIN_VERS="$(rpm -q --qf '%{VERSION}' kwin)"
# Doing QT as well just in case, we have a versionlock in main
QT_VER="$(rpm -q --qf '%{VERSION}' qt6-qtbase)"
# Not an important package in itself, just a good indicator
QTFS_VER="$(rpm -q --qf '%{VERSION}' qt6-filesystem)"
if [[ "$KDE_VER" != "$KSCREEN_VERS" || "$KDE_VER" != "$KWIN_VERS" ]]; then
echo "KDE Version mismatch"
exit 1
fi
if [[ "$QT_VER" != "$QTFS_VER" ]]; then
echo "QT Version mismatch"
exit 1
fi
IMPORTANT_PACKAGES=(
distrobox
fish
flatpak
krunner-bazaar
kwin
pipewire
plasma-desktop
podman
plasma-login-manager
Sunshine
systemd
tailscale
uupd
wireplumber
zsh
)
for package in "${IMPORTANT_PACKAGES[@]}"; do
rpm -q "${package}" >/dev/null || { echo "Missing package: ${package}... Exiting"; exit 1 ; }
done
# these should be sourced from negativo's fedora-multimedia repo
# as Fedora can't ship patent encumbered video codecs
NEGATIVO=(
ffmpeg
libheif
libva
mesa-filesystem
mesa-dri-drivers
pipewire-libs-extra
x264-libs
x265-libs
)
for package in "${NEGATIVO[@]}"; do
rpm -q --qf "%{NAME} %{VENDOR}" "${package}" | grep -q "negativo17\.org" || { echo "${package} not from negativo... Exiting"; exit 1 ; }
done
# these packages are supposed to be removed
# and are considered footguns
UNWANTED_PACKAGES=(
akonadi-server
fedora-flathub-remote
fedora-logos
fedora-third-party
firefox
plasma-discover
)
for package in "${UNWANTED_PACKAGES[@]}"; do
if rpm -q "${package}" >/dev/null 2>&1; then
echo "Unwanted package found: ${package}... Exiting"; exit 1
fi
done
if [[ "${IMAGE_NAME}" =~ nvidia ]]; then
NV_PACKAGES=(
kmod-nvidia
libnvidia-container-tools
nvidia-driver-cuda
)
for package in "${NV_PACKAGES[@]}"; do
rpm -q "${package}" >/dev/null || { echo "Missing NVIDIA package: ${package}... Exiting"; exit 1 ; }
done
fi
IMPORTANT_UNITS=(
rpm-ostree-countme.timer
tailscaled.service
ublue-system-setup.service
uupd.timer
)
for unit in "${IMPORTANT_UNITS[@]}"; do
if ! systemctl is-enabled "$unit" 2>/dev/null | grep -q "^enabled$"; then
echo "${unit} is not enabled"
exit 1
fi
done
if [[ "${IMAGE_FLAVOR}" == "dx" ]]; then
/ctx/build_scripts/dx/10-tests-dx.sh;
fi
/ctx/build_scripts/shared/validate-repos.sh
echo "::endgroup::"