From 16ddada7a3d1f3c41f9ed145a26bf6d1b3ef7ba6 Mon Sep 17 00:00:00 2001 From: Ana Hobden Date: Mon, 10 Apr 2023 12:47:34 -0700 Subject: [PATCH] Only stop the nix daemon if it's actually active, not just enabled (#410) * Only stop the nix daemon if it's actually active, not just enabled * Add vm-tests --- nix/tests/vm-test/default.nix | 21 +++++++++++++++++++++ src/action/common/configure_init_service.rs | 12 ++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/nix/tests/vm-test/default.nix b/nix/tests/vm-test/default.nix index d4c9908..3d4d143 100644 --- a/nix/tests/vm-test/default.nix +++ b/nix/tests/vm-test/default.nix @@ -236,6 +236,17 @@ let uninstall = installCases.install-default.uninstall; uninstallCheck = installCases.install-default.uninstallCheck; }; + cure-self-multi-broken-daemon-stopped = { + preinstall = '' + ${nix-installer-install-quiet} + sudo mv /nix/receipt.json /nix/old-receipt.json + sudo systemctl stop nix-daemon.socket + ''; + install = installCases.install-default.install; + check = installCases.install-default.check; + uninstall = installCases.install-default.uninstall; + uninstallCheck = installCases.install-default.uninstallCheck; + }; cure-self-linux-broken-no-etc-nix = { preinstall = '' ${nix-installer-install-quiet} @@ -290,6 +301,16 @@ let uninstall = installCases.install-default.uninstall; uninstallCheck = installCases.install-default.uninstallCheck; }; + cure-script-multi-broken-daemon-stopped = { + preinstall = '' + ${cure-script-multi-user} + sudo systemctl stop nix-daemon.socket + ''; + install = installCases.install-default.install; + check = installCases.install-default.check; + uninstall = installCases.install-default.uninstall; + uninstallCheck = installCases.install-default.uninstallCheck; + }; cure-script-multi-broken-no-etc-nix = { preinstall = '' ${cure-script-multi-user} diff --git a/src/action/common/configure_init_service.rs b/src/action/common/configure_init_service.rs index 587bd90..d5f3b6b 100644 --- a/src/action/common/configure_init_service.rs +++ b/src/action/common/configure_init_service.rs @@ -246,13 +246,13 @@ impl Action for ConfigureInitService { .map_err(Self::error)?; } // The goal state is the `socket` enabled and active, the service not enabled and stopped (it activates via socket activation) + if is_enabled("nix-daemon.socket").await.map_err(Self::error)? { + disable("nix-daemon.socket", false) + .await + .map_err(Self::error)?; + } let socket_was_active = - if is_enabled("nix-daemon.socket").await.map_err(Self::error)? { - disable("nix-daemon.socket", true) - .await - .map_err(Self::error)?; - true - } else if is_active("nix-daemon.socket").await.map_err(Self::error)? { + if is_active("nix-daemon.socket").await.map_err(Self::error)? { stop("nix-daemon.socket").await.map_err(Self::error)?; true } else {