mirror of
https://github.com/Felitendo/spotifast.git
synced 2026-11-01 17:33:26 +01:00
Align native and Flatpak window IDs with installed desktop entries and icons, while preserving existing window state. Keep packaging compatible with the immutable 0.8.0 inputs and test both launcher generations. Refs #462
95 lines
3.8 KiB
Bash
95 lines
3.8 KiB
Bash
#!/usr/bin/env bash
|
|
# Usage: bash packaging/test-install.sh ubuntu:24.04 dist/packages/0.8.0 [legacy-packages] [desktop-id]
|
|
# Run on the matching architecture, with a C compiler and Docker available.
|
|
set -euo pipefail
|
|
|
|
image=${1:?Supply a Debian, Ubuntu or Fedora container image}
|
|
packages=$(realpath "${2:?Supply a native-packages output directory}")
|
|
legacy_packages=$(realpath "${3:-$packages/legacy}")
|
|
desktop_id=${4:-spotifast}
|
|
case "$desktop_id" in
|
|
spotifast|fastpotify) ;;
|
|
*) echo 'Unsupported desktop fixture identity' >&2; exit 1 ;;
|
|
esac
|
|
case "$(uname -m)" in
|
|
x86_64) target=linux-amd64 ;;
|
|
aarch64) target=linux-arm64 ;;
|
|
*) echo 'Unsupported test architecture' >&2; exit 1 ;;
|
|
esac
|
|
case "$image" in
|
|
ubuntu:*|debian:*) format=deb ;;
|
|
fedora:*) format=rpm ;;
|
|
*) echo 'Unsupported test distribution' >&2; exit 1 ;;
|
|
esac
|
|
package_dir="$packages/packages/$target/$format"
|
|
test -d "$package_dir"
|
|
legacy_mount=()
|
|
if [[ -d "$legacy_packages" ]]; then
|
|
legacy_mount=(--volume "$legacy_packages:/legacy:ro")
|
|
fi
|
|
script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
|
checks=$(mktemp -d)
|
|
trap 'rm -rf -- "$checks"' EXIT
|
|
cc -std=c99 -Wall -Wextra -Werror "$script_dir/check-runtime-libs.c" -ldl -o "$checks/check-runtime-libs"
|
|
|
|
docker run --rm \
|
|
--volume "$package_dir:/packages:ro" \
|
|
--volume "$checks:/checks:ro" \
|
|
"${legacy_mount[@]}" \
|
|
--env "FORMAT=$format" \
|
|
--env "DESKTOP_ID=$desktop_id" \
|
|
"$image" sh -ec '
|
|
set -- /packages/*."$FORMAT"
|
|
test "$#" -eq 1
|
|
test -f "$1"
|
|
mkdir -p /root/.config/fastpotify
|
|
printf "%s\n" "preserve-existing-settings" > /root/.config/fastpotify/rename-fixture
|
|
if [ "$FORMAT" = deb ]; then
|
|
apt-get update
|
|
if [ -d /legacy ]; then
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends /legacy/*.deb
|
|
dpkg-query -W fastpotify
|
|
fi
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "$1"
|
|
dpkg-query -W spotifast
|
|
test "$(dpkg-query -W -f="\${db:Status-Status}" fastpotify 2>/dev/null || true)" != installed
|
|
else
|
|
if [ -d /legacy ]; then
|
|
dnf install -y --setopt=install_weak_deps=False /legacy/*.rpm
|
|
rpm -q fastpotify
|
|
fi
|
|
dnf install -y --setopt=install_weak_deps=False "$1"
|
|
rpm -q spotifast
|
|
! rpm -q fastpotify
|
|
fi
|
|
# --version exercises linked libraries; the probe checks dlopen libraries
|
|
# without installing a desktop, compiler, interpreter or test dependencies.
|
|
fastpotify --version
|
|
spotifast --version
|
|
/checks/check-runtime-libs
|
|
test -s "/usr/share/applications/$DESKTOP_ID.desktop"
|
|
test -s "/usr/share/icons/hicolor/scalable/apps/$DESKTOP_ID.svg"
|
|
grep -qx "Icon=$DESKTOP_ID" "/usr/share/applications/$DESKTOP_ID.desktop"
|
|
grep -qx "StartupWMClass=$DESKTOP_ID" "/usr/share/applications/$DESKTOP_ID.desktop"
|
|
if [ "$DESKTOP_ID" = spotifast ]; then other_id=fastpotify; else other_id=spotifast; fi
|
|
test ! -e "/usr/share/applications/$other_id.desktop"
|
|
test ! -e "/usr/share/icons/hicolor/scalable/apps/$other_id.svg"
|
|
test -s /usr/share/spotifast/omarchy/spotifast.json.tpl
|
|
test -x /usr/share/spotifast/omarchy/spotifast-theme
|
|
test "$(cat /root/.config/fastpotify/rename-fixture)" = preserve-existing-settings
|
|
if [ "$FORMAT" = deb ]; then
|
|
apt-get remove -y spotifast
|
|
else
|
|
dnf remove -y spotifast
|
|
fi
|
|
test ! -e /usr/bin/fastpotify
|
|
test ! -e /usr/bin/spotifast
|
|
test ! -e /usr/share/applications/fastpotify.desktop
|
|
test ! -e /usr/share/applications/spotifast.desktop
|
|
test ! -e /usr/share/icons/hicolor/scalable/apps/fastpotify.svg
|
|
test ! -e /usr/share/icons/hicolor/scalable/apps/spotifast.svg
|
|
test ! -e /usr/share/spotifast/omarchy/spotifast.json.tpl
|
|
test ! -e /usr/share/spotifast/omarchy/spotifast-theme
|
|
test "$(cat /root/.config/fastpotify/rename-fixture)" = preserve-existing-settings
|
|
'
|