From 6baf374a6b2a6cdad61c641a04fb0495a0ba821c Mon Sep 17 00:00:00 2001 From: Vinnie Magro Date: Thu, 31 Aug 2023 09:39:22 -0700 Subject: [PATCH] fixes for antlir2 Summary: antlir2 builds never have a booted systemd as pid1, so any dbus interactions will fail This diff no-ops: - `daemon-reload` - `daemon-reexec` and branches with `--root=/` for: - `set-default` Differential Revision: D48618221 fbshipit-source-id: 4cecc50040bcbae7325063bdca7e1c9fffd07868 --- cookbooks/fb_systemd/metadata.rb | 1 + cookbooks/fb_systemd/recipes/default.rb | 8 ++++++-- cookbooks/fb_systemd/resources/reload.rb | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cookbooks/fb_systemd/metadata.rb b/cookbooks/fb_systemd/metadata.rb index 4466e443e..3efa1a3b0 100644 --- a/cookbooks/fb_systemd/metadata.rb +++ b/cookbooks/fb_systemd/metadata.rb @@ -13,3 +13,4 @@ supports 'arch' depends 'fb_helpers' depends 'fb_nsswitch' +depends 'fb_util' diff --git a/cookbooks/fb_systemd/recipes/default.rb b/cookbooks/fb_systemd/recipes/default.rb index 1b78fe358..08fba2165 100644 --- a/cookbooks/fb_systemd/recipes/default.rb +++ b/cookbooks/fb_systemd/recipes/default.rb @@ -159,7 +159,11 @@ execute 'set default target' do only_if do - current = shell_out('systemctl get-default').stdout.strip + if node.antlir2_build? + current = shell_out('systemctl --root=/ get-default').stdout.strip + else + current = shell_out('systemctl get-default').stdout.strip + end is_ignored = node['fb_systemd']['ignore_targets'].include?(current) is_supported = FB::Version.new(node['packages']['systemd'][ 'version']) >= FB::Version.new('205') @@ -167,7 +171,7 @@ current != node['fb_systemd']['default_target'] end command lazy { - "systemctl set-default #{node['fb_systemd']['default_target']}" + "systemctl set-default #{node['fb_systemd']['default_target']} #{node.antlir2_build? ? '--root=/' : ''}" } end diff --git a/cookbooks/fb_systemd/resources/reload.rb b/cookbooks/fb_systemd/resources/reload.rb index d51aa7adb..d836d6e22 100644 --- a/cookbooks/fb_systemd/resources/reload.rb +++ b/cookbooks/fb_systemd/resources/reload.rb @@ -34,6 +34,10 @@ def daemon_reload_or_reexec(action) ) return end + # Image builds don't have a running systemd, that would make no sense + if node.antlir2_build? + return + end case new_resource.instance when 'system' execute "#{action} systemd system instance" do