install: avoid forcing pipewire jack over jack2

This commit is contained in:
Brad Stein 2026-05-10 23:24:31 -03:00
parent 4c6010ece6
commit a00a0995bb
4 changed files with 50 additions and 12 deletions

View File

@ -312,12 +312,28 @@ MSG
Good first retry:
sudo pacman -Syu --disable-download-timeout
If mirrors keep timing out, refresh /etc/pacman.d/mirrorlist before retrying.
MSG
elif grep -Eq "pipewire-jack.*jack2|jack2.*pipewire-jack|are in conflict \\(jack\\)" "$log_file"; then
cat >&2 <<'MSG'
❌ Arch refused to install pipewire-jack because JACK is already provided by jack2.
Lesavka does not require JACK. The installer only keeps pipewire-jack coherent
on hosts that already use it; do not remove jack2 just for Lesavka.
Pull the latest installer and rerun the Lesavka client install.
MSG
fi
echo " pacman log: $log_file" >&2
exit 1
}
pipewire_package_set() {
printf '%s\n' libpipewire pipewire pipewire-audio pipewire-pulse
for package in pipewire-alsa pipewire-jack; do
if pacman -Q "$package" >/dev/null 2>&1; then
printf '%s\n' "$package"
fi
done
}
fetch_client_pki_bundle() {
[[ $CLIENT_PKI_AUTO_FETCH != 0 && $CLIENT_PKI_AUTO_FETCH != false && $CLIENT_PKI_AUTO_FETCH != no ]] || return 1
[[ $CLIENT_PKI_SSH_SOURCE == *:* ]] || return 1
@ -386,9 +402,10 @@ fi
REPO_URL=${REPO_URL:-$DEFAULT_REPO_URL}
log "1. Installing base packages"
mapfile -t PIPEWIRE_PACKAGES < <(pipewire_package_set)
pacman_install \
git rustup protobuf abseil-cpp gcc clang llvm-libs compiler-rt evtest base-devel libpulse \
libpipewire pipewire pipewire-audio pipewire-alsa pipewire-jack pipewire-pulse wireplumber \
"${PIPEWIRE_PACKAGES[@]}" wireplumber \
alsa-utils gst-plugin-pipewire \
gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav \
wmctrl qt6-tools wl-clipboard xclip xsel desktop-file-utils openssl

View File

@ -948,12 +948,28 @@ MSG
Good first retry:
sudo pacman -Syu --disable-download-timeout
If mirrors keep timing out, refresh /etc/pacman.d/mirrorlist before retrying.
MSG
elif grep -Eq "pipewire-jack.*jack2|jack2.*pipewire-jack|are in conflict \\(jack\\)" "$log_file"; then
cat >&2 <<'MSG'
❌ Arch refused to install pipewire-jack because JACK is already provided by jack2.
Lesavka does not require JACK. The installer only keeps pipewire-jack coherent
on hosts that already use it; do not remove jack2 just for Lesavka.
Pull the latest installer and rerun the Lesavka server install.
MSG
fi
echo " pacman log: $log_file" >&2
exit 1
}
pipewire_package_set() {
printf '%s\n' libpipewire pipewire pipewire-audio pipewire-pulse
for package in pipewire-alsa pipewire-jack; do
if pacman -Q "$package" >/dev/null 2>&1; then
printf '%s\n' "$package"
fi
done
}
install_verified_executable() {
local src=$1
local dest=$2
@ -1042,18 +1058,14 @@ fi
REPO_URL=${REPO_URL:-$DEFAULT_REPO_URL}
echo "==> 1a. Base packages"
mapfile -t PIPEWIRE_PACKAGES < <(pipewire_package_set)
pacman_install git \
rustup \
protobuf \
abseil-cpp \
gcc \
alsa-utils \
libpipewire \
pipewire \
pipewire-audio \
pipewire-alsa \
pipewire-jack \
pipewire-pulse \
"${PIPEWIRE_PACKAGES[@]}" \
tailscale \
base-devel \
v4l-utils \

View File

@ -129,9 +129,15 @@ fn client_install_reports_nvidia_and_open_source_media_routes() {
fn client_install_treats_pipewire_as_one_coherent_transaction() {
for expected in [
"pacman_install()",
"libpipewire pipewire pipewire-audio pipewire-alsa pipewire-jack pipewire-pulse",
"pipewire_package_set()",
"libpipewire pipewire pipewire-audio pipewire-pulse",
"for package in pipewire-alsa pipewire-jack",
"pacman -Q \"$package\"",
"\"${PIPEWIRE_PACKAGES[@]}\"",
"breaks dependency '.*pipewire",
"PipeWire packages are at mixed exact versions",
"Lesavka does not require JACK",
"do not remove jack2 just for Lesavka",
"sudo pacman -Syu",
"failed retrieving file",
"sudo pacman -Syu --disable-download-timeout",

View File

@ -388,12 +388,15 @@ fn server_install_provisions_non_rebooting_recovery_ladder() {
fn server_install_treats_pipewire_as_one_coherent_transaction() {
for expected in [
"pacman_install()",
"libpipewire",
"pipewire-audio",
"pipewire-alsa",
"pipewire-jack",
"pipewire_package_set()",
"libpipewire pipewire pipewire-audio pipewire-pulse",
"for package in pipewire-alsa pipewire-jack",
"pacman -Q \"$package\"",
"\"${PIPEWIRE_PACKAGES[@]}\"",
"breaks dependency '.*pipewire",
"PipeWire packages are at mixed exact versions",
"Lesavka does not require JACK",
"do not remove jack2 just for Lesavka",
"failed retrieving file",
"sudo pacman -Syu --disable-download-timeout",
] {