From a7ab480eea78938b0e93c3b7fa3298c59e014ad3 Mon Sep 17 00:00:00 2001 From: Ana Hobden Date: Wed, 9 Nov 2022 09:25:29 -0800 Subject: [PATCH] Get repeated install working in CI --- .github/workflows/ci.yml | 8 ++++++++ src/action/common/configure_nix_daemon_service.rs | 13 +++++++++++-- src/action/linux/start_systemd_unit.rs | 10 +++++++--- src/planner/linux/multi.rs | 2 +- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index adb6c1d..0843edf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,6 +101,10 @@ jobs: run: sudo RUST_LOG=harmonic=trace RUST_BACKTRACE=full ./harmonic uninstall --no-confirm - name: Repeated install run: sudo RUST_LOG=harmonic=trace RUST_BACKTRACE=full ./harmonic install linux-multi --no-confirm + - name: Repeated test run + run: | + . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + nix run nixpkgs#fortune - name: Repeated uninstall run: sudo RUST_LOG=harmonic=trace RUST_BACKTRACE=full ./harmonic uninstall --no-confirm @@ -140,6 +144,10 @@ jobs: run: sudo RUST_LOG=harmonic=trace RUST_BACKTRACE=full ./harmonic uninstall --no-confirm - name: Repeated install run: sudo RUST_LOG=harmonic=trace RUST_BACKTRACE=full ./harmonic install darwin-multi --no-confirm + - name: Repeated test run + run: | + . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + nix run nixpkgs#fortune - name: Repeated uninstall run: sudo RUST_LOG=harmonic=trace RUST_BACKTRACE=full ./harmonic uninstall --no-confirm \ No newline at end of file diff --git a/src/action/common/configure_nix_daemon_service.rs b/src/action/common/configure_nix_daemon_service.rs index 5e810fd..8f20d8e 100644 --- a/src/action/common/configure_nix_daemon_service.rs +++ b/src/action/common/configure_nix_daemon_service.rs @@ -132,6 +132,15 @@ impl Action for ConfigureNixDaemonService { execute_command(Command::new("systemctl").arg("daemon-reload")) .await .map_err(|e| ConfigureNixDaemonServiceError::Command(e).boxed())?; + + execute_command( + Command::new("systemctl") + .arg("enable") + .arg("--now") + .arg("nix-daemon.socket"), + ) + .await + .map_err(|e| ConfigureNixDaemonServiceError::Command(e).boxed())?; }, }; @@ -181,11 +190,11 @@ impl Action for ConfigureNixDaemonService { .map_err(|e| ConfigureNixDaemonServiceError::Command(e).boxed())?; }, _ => { - execute_command(Command::new("systemctl").args(["disable", SOCKET_SRC])) + execute_command(Command::new("systemctl").args(["disable", SOCKET_SRC, "--now"])) .await .map_err(|e| ConfigureNixDaemonServiceError::Command(e).boxed())?; - execute_command(Command::new("systemctl").args(["disable", SERVICE_SRC])) + execute_command(Command::new("systemctl").args(["disable", SERVICE_SRC, "--now"])) .await .map_err(|e| ConfigureNixDaemonServiceError::Command(e).boxed())?; diff --git a/src/action/linux/start_systemd_unit.rs b/src/action/linux/start_systemd_unit.rs index 7f36f57..5a21f77 100644 --- a/src/action/linux/start_systemd_unit.rs +++ b/src/action/linux/start_systemd_unit.rs @@ -90,9 +90,13 @@ impl Action for StartSystemdUnit { tracing::debug!("Stopping systemd unit"); // TODO(@Hoverbear): Handle proxy vars - execute_command(Command::new("systemctl").arg("stop").arg(format!("{unit}"))) - .await - .map_err(|e| StartSystemdUnitError::Command(e).boxed())?; + execute_command( + Command::new("systemctl") + .arg("disable") + .arg(format!("{unit}")), + ) + .await + .map_err(|e| StartSystemdUnitError::Command(e).boxed())?; tracing::trace!("Stopped systemd unit"); *action_state = ActionState::Completed; diff --git a/src/planner/linux/multi.rs b/src/planner/linux/multi.rs index 54aa3aa..8c2657d 100644 --- a/src/planner/linux/multi.rs +++ b/src/planner/linux/multi.rs @@ -31,7 +31,7 @@ impl Planner for LinuxMulti { Box::new(CreateDirectory::plan("/nix", None, None, 0o0755, true).await?), Box::new(ProvisionNix::plan(self.settings.clone()).await?), Box::new(ConfigureNix::plan(self.settings).await?), - Box::new(StartSystemdUnit::plan("nix-daemon.socket".into()).await?), + // Box::new(StartSystemdUnit::plan("nix-daemon.socket".into()).await?), ], }) }