install: require opt-in for live uvc helper refresh
This commit is contained in:
parent
01c4d55926
commit
f9058329bc
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.22.41"
|
version = "0.22.42"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -1686,7 +1686,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.22.41"
|
version = "0.22.42"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
@ -1698,7 +1698,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.22.41"
|
version = "0.22.42"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
|
|||||||
@ -4,7 +4,7 @@ path = "src/main.rs"
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.22.41"
|
version = "0.22.42"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.22.41"
|
version = "0.22.42"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
|
|||||||
@ -1884,11 +1884,12 @@ if [[ "$HOST_GADGET_PROTECTED" == "1" ]] \
|
|||||||
CAN_TOUCH_UVC_SERVICE=0
|
CAN_TOUCH_UVC_SERVICE=0
|
||||||
fi
|
fi
|
||||||
if [[ "$CAN_TOUCH_UVC_SERVICE" != "1" ]] && systemctl is-active --quiet lesavka-uvc; then
|
if [[ "$CAN_TOUCH_UVC_SERVICE" != "1" ]] && systemctl is-active --quiet lesavka-uvc; then
|
||||||
if [[ "${LESAVKA_INSTALL_PRESERVE_UVC_HELPER:-0}" == "1" ]]; then
|
if [[ "${LESAVKA_INSTALL_RESTART_UVC_HELPER:-0}" == "1" ]]; then
|
||||||
echo "✅ lesavka-uvc already active; preserving it during attached-gadget version update."
|
|
||||||
else
|
|
||||||
restart_lesavka_uvc_helper_only
|
restart_lesavka_uvc_helper_only
|
||||||
echo "✅ lesavka-uvc helper restarted in-place; lesavka-core and the attached USB gadget were preserved."
|
echo "✅ lesavka-uvc helper restarted in-place by explicit request; lesavka-core and the attached USB gadget were preserved."
|
||||||
|
else
|
||||||
|
echo "✅ lesavka-uvc already active; preserving it during attached-gadget version update."
|
||||||
|
echo " Set LESAVKA_INSTALL_RESTART_UVC_HELPER=1 only during a local maintenance window if the helper binary must be refreshed without cycling lesavka-core."
|
||||||
fi
|
fi
|
||||||
elif [[ "$CAN_TOUCH_UVC_SERVICE" != "1" ]]; then
|
elif [[ "$CAN_TOUCH_UVC_SERVICE" != "1" ]]; then
|
||||||
echo "⚠️ lesavka-uvc is inactive, but the host/gadget is protected; not starting it during a version-only install." >&2
|
echo "⚠️ lesavka-uvc is inactive, but the host/gadget is protected; not starting it during a version-only install." >&2
|
||||||
|
|||||||
@ -10,7 +10,7 @@ bench = false
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.22.41"
|
version = "0.22.42"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
autobins = false
|
autobins = false
|
||||||
|
|
||||||
|
|||||||
@ -484,16 +484,16 @@ fn server_install_pins_hdmi_camera_and_display_defaults() {
|
|||||||
assert!(
|
assert!(
|
||||||
SERVER_INSTALL.contains("CAN_TOUCH_UVC_SERVICE=0")
|
SERVER_INSTALL.contains("CAN_TOUCH_UVC_SERVICE=0")
|
||||||
&& SERVER_INSTALL.contains("preserving it during attached-gadget version update")
|
&& SERVER_INSTALL.contains("preserving it during attached-gadget version update")
|
||||||
&& SERVER_INSTALL.contains("LESAVKA_INSTALL_PRESERVE_UVC_HELPER")
|
&& SERVER_INSTALL.contains("LESAVKA_INSTALL_RESTART_UVC_HELPER")
|
||||||
&& SERVER_INSTALL.contains("not starting it during a version-only install"),
|
&& SERVER_INSTALL.contains("not starting it during a version-only install"),
|
||||||
"ordinary attached-gadget version updates should keep an operator escape hatch for preserving the UVC helper"
|
"ordinary attached-gadget version updates should preserve the UVC helper unless an operator explicitly opts into helper refresh"
|
||||||
);
|
);
|
||||||
assert!(
|
assert!(
|
||||||
SERVER_INSTALL.contains("restart_lesavka_uvc_helper_only")
|
SERVER_INSTALL.contains("restart_lesavka_uvc_helper_only")
|
||||||
&& SERVER_INSTALL.contains("systemctl restart lesavka-uvc")
|
&& SERVER_INSTALL.contains("systemctl restart lesavka-uvc")
|
||||||
&& SERVER_INSTALL
|
&& SERVER_INSTALL
|
||||||
.contains("lesavka-uvc helper restarted in-place; lesavka-core and the attached USB gadget were preserved"),
|
.contains("lesavka-uvc helper restarted in-place by explicit request; lesavka-core and the attached USB gadget were preserved"),
|
||||||
"version updates must refresh the UVC helper binary without cycling lesavka-core or rebuilding the gadget"
|
"the optional helper refresh must be explicit and must not cycle lesavka-core or rebuild the gadget"
|
||||||
);
|
);
|
||||||
assert!(
|
assert!(
|
||||||
SERVER_INSTALL.contains("sudo systemctl start lesavka-uvc"),
|
SERVER_INSTALL.contains("sudo systemctl start lesavka-uvc"),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user