diff options
author | Stig <stig@stig.io> | 2022-08-21 17:31:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-21 17:31:52 +0200 |
commit | 8c4a3b279be85bd863138e69f09ee88d3f969b5b (patch) | |
tree | 0625394838452308bfbd7df8205e49a198fd2292 | |
parent | 262f2f58b940e4a21858da04d46cffa919597a8e (diff) | |
parent | 7874b995fba14ba6111e10e2bb7f89224ddaa41b (diff) | |
download | nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.tar nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.tar.gz nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.tar.bz2 nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.tar.lz nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.tar.xz nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.tar.zst nixlib-8c4a3b279be85bd863138e69f09ee88d3f969b5b.zip |
Merge pull request #186503 from Weathercold/patch-1
nixos/switch-to-configuration: fix units starting with dash not being able to reload
-rwxr-xr-x | nixos/modules/system/activation/switch-to-configuration.pl | 2 | ||||
-rw-r--r-- | nixos/tests/switch-test.nix | 39 |
2 files changed, 39 insertions, 2 deletions
diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl index f39549db883d..9a4c635402d1 100755 --- a/nixos/modules/system/activation/switch-to-configuration.pl +++ b/nixos/modules/system/activation/switch-to-configuration.pl @@ -167,7 +167,7 @@ sub get_active_units { # Takes the name of the unit as an argument and returns a bool whether the unit is active or not. sub unit_is_active { my ($unit_name) = @_; - my $units = busctl_call_systemd1_mgr("ListUnitsByNames", "as", 1, $unit_name)->{data}->[0]; + my $units = busctl_call_systemd1_mgr("ListUnitsByNames", "as", 1, , "--", $unit_name)->{data}->[0]; if (scalar(@{$units}) == 0) { return 0; } diff --git a/nixos/tests/switch-test.nix b/nixos/tests/switch-test.nix index 0198866b6ff8..f891a2cb2f4c 100644 --- a/nixos/tests/switch-test.nix +++ b/nixos/tests/switch-test.nix @@ -214,6 +214,25 @@ in { systemd.services."escaped\\x2ddash".serviceConfig.X-Test = "test"; }; + unitStartingWithDash.configuration = { + systemd.services."-" = { + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = "${pkgs.coreutils}/bin/true"; + }; + }; + }; + + unitStartingWithDashModified.configuration = { + imports = [ unitStartingWithDash.configuration ]; + systemd.services."-" = { + reloadIfChanged = true; + serviceConfig.ExecReload = "${pkgs.coreutils}/bin/true"; + }; + }; + unitWithRequirement.configuration = { systemd.services.required-service = { wantedBy = [ "multi-user.target" ]; @@ -637,9 +656,27 @@ in { assert_contains(out, "\nstarting the following units: escaped\\x2ddash.service\n") assert_lacks(out, "the following new units were started:") + # Ensure units can start with a dash + out = switch_to_specialisation("${machine}", "unitStartingWithDash") + assert_contains(out, "stopping the following units: escaped\\x2ddash.service\n") + assert_lacks(out, "NOT restarting the following changed units:") + assert_lacks(out, "reloading the following units:") + assert_lacks(out, "\nrestarting the following units:") + assert_lacks(out, "\nstarting the following units:") + assert_contains(out, "the following new units were started: -.service\n") + + # The regression only occurs when reloading units + out = switch_to_specialisation("${machine}", "unitStartingWithDashModified") + assert_lacks(out, "stopping the following units:") + assert_lacks(out, "NOT restarting the following changed units:") + assert_contains(out, "reloading the following units: -.service") + assert_lacks(out, "\nrestarting the following units:") + assert_lacks(out, "\nstarting the following units:") + assert_lacks(out, "the following new units were started:") + # Ensure units that require changed units are properly reloaded out = switch_to_specialisation("${machine}", "unitWithRequirement") - assert_contains(out, "stopping the following units: escaped\\x2ddash.service\n") + assert_contains(out, "stopping the following units: -.service\n") assert_lacks(out, "NOT restarting the following changed units:") assert_lacks(out, "reloading the following units:") assert_lacks(out, "\nrestarting the following units:") |