install: warn when client needs restart

This commit is contained in:
Brad Stein 2026-05-12 04:19:23 -03:00
parent 5ec380a3cc
commit e9a7e1e514
6 changed files with 37 additions and 6 deletions

6
Cargo.lock generated
View File

@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lesavka_client"
version = "0.22.9"
version = "0.22.10"
dependencies = [
"anyhow",
"async-stream",
@ -1686,7 +1686,7 @@ dependencies = [
[[package]]
name = "lesavka_common"
version = "0.22.9"
version = "0.22.10"
dependencies = [
"anyhow",
"base64",
@ -1698,7 +1698,7 @@ dependencies = [
[[package]]
name = "lesavka_server"
version = "0.22.9"
version = "0.22.10"
dependencies = [
"anyhow",
"base64",

View File

@ -4,7 +4,7 @@ path = "src/main.rs"
[package]
name = "lesavka_client"
version = "0.22.9"
version = "0.22.10"
edition = "2024"
[dependencies]

View File

@ -1,6 +1,6 @@
[package]
name = "lesavka_common"
version = "0.22.9"
version = "0.22.10"
edition = "2024"
build = "build.rs"

View File

@ -332,6 +332,33 @@ install_verified_executable() {
sudo chmod 0755 "$dest"
}
warn_running_stale_client_processes() {
local installed=/usr/local/bin/lesavka-client
local installed_inode=""
installed_inode=$(stat -Lc '%i' "$installed" 2>/dev/null || true)
local stale=()
local pid exe exe_inode cmd
while read -r pid; do
[[ -n "$pid" ]] || continue
exe=$(readlink "/proc/$pid/exe" 2>/dev/null || true)
[[ -n "$exe" ]] || continue
exe_inode=$(stat -Lc '%i' "/proc/$pid/exe" 2>/dev/null || true)
if [[ "$exe" == *" (deleted)"* || ( -n "$installed_inode" && "$exe_inode" != "$installed_inode" ) ]]; then
cmd=$(tr '\0' ' ' <"/proc/$pid/cmdline" 2>/dev/null || true)
stale+=("pid=$pid exe=$exe cmd=${cmd:-unknown}")
fi
done < <(pgrep -u "$ORIG_USER" -f '(^|/)(lesavka|lesavka-client)( |$|--)' 2>/dev/null || true)
if ((${#stale[@]} == 0)); then
return
fi
echo "⚠️ Lesavka is still running from an older/deleted binary."
echo " Close and relaunch Lesavka before judging video/audio performance from this install."
printf ' %s\n' "${stale[@]}"
}
pacman_install() {
local log_file
log_file=$(mktemp --tmpdir="$TMPDIR" lesavka-pacman.XXXXXX.log)
@ -567,6 +594,7 @@ echo " Desktop entry: /usr/share/applications/lesavka.desktop"
echo " Build source: $SRC/target/release/lesavka-client"
echo " TLS identity: $CLIENT_PKI_DIR"
echo " Captures: $CLIENT_CAPTURE_DIR"
warn_running_stale_client_processes
echo "✅ Installed version: lesavka-client ${INSTALLED_VERSION:-unknown}${INSTALLED_SHA:+ ($INSTALLED_SHA)}"
echo
echo "Quick start:"

View File

@ -10,7 +10,7 @@ bench = false
[package]
name = "lesavka_server"
version = "0.22.9"
version = "0.22.10"
edition = "2024"
autobins = false

View File

@ -84,7 +84,10 @@ fn client_install_reports_nvidia_and_open_source_media_routes() {
for expected in [
"report_client_media_acceleration",
"refresh_gstreamer_registry_cache",
"warn_running_stale_client_processes",
"Refreshing GStreamer plugin registry",
"Lesavka is still running from an older/deleted binary.",
"Close and relaunch Lesavka before judging video/audio performance",
"run_as_user rm -f \"$USER_HOME/.cache/gstreamer-1.0\"/registry.*",
"gst-inspect-1.0 nvcodec",
"gst-inspect-1.0 va",