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: Good first retry:
sudo pacman -Syu --disable-download-timeout sudo pacman -Syu --disable-download-timeout
If mirrors keep timing out, refresh /etc/pacman.d/mirrorlist before retrying. 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 MSG
fi fi
echo " pacman log: $log_file" >&2 echo " pacman log: $log_file" >&2
exit 1 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() { fetch_client_pki_bundle() {
[[ $CLIENT_PKI_AUTO_FETCH != 0 && $CLIENT_PKI_AUTO_FETCH != false && $CLIENT_PKI_AUTO_FETCH != no ]] || return 1 [[ $CLIENT_PKI_AUTO_FETCH != 0 && $CLIENT_PKI_AUTO_FETCH != false && $CLIENT_PKI_AUTO_FETCH != no ]] || return 1
[[ $CLIENT_PKI_SSH_SOURCE == *:* ]] || return 1 [[ $CLIENT_PKI_SSH_SOURCE == *:* ]] || return 1
@ -386,9 +402,10 @@ fi
REPO_URL=${REPO_URL:-$DEFAULT_REPO_URL} REPO_URL=${REPO_URL:-$DEFAULT_REPO_URL}
log "1. Installing base packages" log "1. Installing base packages"
mapfile -t PIPEWIRE_PACKAGES < <(pipewire_package_set)
pacman_install \ pacman_install \
git rustup protobuf abseil-cpp gcc clang llvm-libs compiler-rt evtest base-devel libpulse \ 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 \ alsa-utils gst-plugin-pipewire \
gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav \ 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 wmctrl qt6-tools wl-clipboard xclip xsel desktop-file-utils openssl

View File

@ -948,12 +948,28 @@ MSG
Good first retry: Good first retry:
sudo pacman -Syu --disable-download-timeout sudo pacman -Syu --disable-download-timeout
If mirrors keep timing out, refresh /etc/pacman.d/mirrorlist before retrying. 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 MSG
fi fi
echo " pacman log: $log_file" >&2 echo " pacman log: $log_file" >&2
exit 1 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() { install_verified_executable() {
local src=$1 local src=$1
local dest=$2 local dest=$2
@ -1042,18 +1058,14 @@ fi
REPO_URL=${REPO_URL:-$DEFAULT_REPO_URL} REPO_URL=${REPO_URL:-$DEFAULT_REPO_URL}
echo "==> 1a. Base packages" echo "==> 1a. Base packages"
mapfile -t PIPEWIRE_PACKAGES < <(pipewire_package_set)
pacman_install git \ pacman_install git \
rustup \ rustup \
protobuf \ protobuf \
abseil-cpp \ abseil-cpp \
gcc \ gcc \
alsa-utils \ alsa-utils \
libpipewire \ "${PIPEWIRE_PACKAGES[@]}" \
pipewire \
pipewire-audio \
pipewire-alsa \
pipewire-jack \
pipewire-pulse \
tailscale \ tailscale \
base-devel \ base-devel \
v4l-utils \ 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() { fn client_install_treats_pipewire_as_one_coherent_transaction() {
for expected in [ for expected in [
"pacman_install()", "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", "breaks dependency '.*pipewire",
"PipeWire packages are at mixed exact versions", "PipeWire packages are at mixed exact versions",
"Lesavka does not require JACK",
"do not remove jack2 just for Lesavka",
"sudo pacman -Syu", "sudo pacman -Syu",
"failed retrieving file", "failed retrieving file",
"sudo pacman -Syu --disable-download-timeout", "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() { fn server_install_treats_pipewire_as_one_coherent_transaction() {
for expected in [ for expected in [
"pacman_install()", "pacman_install()",
"libpipewire", "pipewire_package_set()",
"pipewire-audio", "libpipewire pipewire pipewire-audio pipewire-pulse",
"pipewire-alsa", "for package in pipewire-alsa pipewire-jack",
"pipewire-jack", "pacman -Q \"$package\"",
"\"${PIPEWIRE_PACKAGES[@]}\"",
"breaks dependency '.*pipewire", "breaks dependency '.*pipewire",
"PipeWire packages are at mixed exact versions", "PipeWire packages are at mixed exact versions",
"Lesavka does not require JACK",
"do not remove jack2 just for Lesavka",
"failed retrieving file", "failed retrieving file",
"sudo pacman -Syu --disable-download-timeout", "sudo pacman -Syu --disable-download-timeout",
] { ] {