Skip to content

Commit

Permalink
daemon: Remove even more session bus/sysroot code
Browse files Browse the repository at this point in the history
Supporting non-default sysroot and session bus are a nice *idea*
but we don't have any tests for this anymore, and carrying it is
nontrivial overhead.

For many reasons we're not likely to put rpm-ostree in the initramfs.
We don't have a strong use case for alternative *client* oriented
sysroots otherwise.  For "build from scratch" the non-daemon
path is already covered via `rpm-ostree compose tree`.
  • Loading branch information
cgwalters committed May 25, 2021
1 parent 6d57532 commit 36237b9
Show file tree
Hide file tree
Showing 24 changed files with 92 additions and 301 deletions.
10 changes: 3 additions & 7 deletions src/app/libmain.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,6 @@ rpmostree_option_context_parse (GOptionContext *context,
const char *const* *out_install_pkgs,
const char *const* *out_uninstall_pkgs,
RPMOSTreeSysroot **out_sysroot_proxy,
GBusType *out_bus_type,
GError **error)
{
/* with --version there's no command, don't require a daemon for it */
Expand Down Expand Up @@ -302,11 +301,8 @@ rpmostree_option_context_parse (GOptionContext *context,
/* ignore errors; we print out a warning if we fail to spawn pkttyagent */
(void)rpmostree_polkit_agent_open ();

if (!rpmostree_load_sysroot (opt_sysroot,
opt_force_peer,
cancellable,
if (!rpmostree_load_sysroot (cancellable,
out_sysroot_proxy,
out_bus_type,
error))
return FALSE;
}
Expand Down Expand Up @@ -393,7 +389,7 @@ rpmostree_handle_subcommand (int argc, char **argv,
&argc, &argv,
invocation,
cancellable,
NULL, NULL, NULL, NULL, NULL);
NULL, NULL, NULL, NULL);
if (subcommand_name == NULL)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
Expand Down Expand Up @@ -508,7 +504,7 @@ rpmostree_main_inner (const rust::Slice<const rust::Str> args)
/* This will not return for some options (e.g. --version). */
(void) rpmostree_option_context_parse (context, NULL, &argc, &argv,
NULL, NULL, NULL, NULL, NULL,
NULL, NULL);
NULL);
g_autofree char *help = g_option_context_get_help (context, FALSE, NULL);
g_printerr ("%s", help);
if (command_name == NULL)
Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-cancel.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ rpmostree_builtin_cancel (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-cleanup.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ rpmostree_builtin_cleanup (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
2 changes: 1 addition & 1 deletion src/app/rpmostree-builtin-db.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ rpmostree_db_option_context_parse (GOptionContext *context,
argc, argv,
invocation,
cancellable,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL,
error))
return FALSE;

Expand Down
4 changes: 1 addition & 3 deletions src/app/rpmostree-builtin-deploy.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ rpmostree_builtin_deploy (int argc,

context = g_option_context_new ("REVISION");

GBusType bus_type;
if (!rpmostree_option_context_parse (context,
option_entries,
&argc, &argv,
Expand All @@ -87,7 +86,6 @@ rpmostree_builtin_deploy (int argc,
&install_pkgs,
&uninstall_pkgs,
&sysroot_proxy,
&bus_type,
error))
return FALSE;

Expand Down Expand Up @@ -133,7 +131,7 @@ rpmostree_builtin_deploy (int argc,
{
if (!opt_bypass_driver)
{
if (!error_if_driver_registered (bus_type, sysroot_proxy, cancellable, error))
if (!error_if_driver_registered (sysroot_proxy, cancellable, error))
return FALSE;
}

Expand Down
2 changes: 1 addition & 1 deletion src/app/rpmostree-builtin-finalize-deployment.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ rpmostree_builtin_finalize_deployment (int argc,
glnx_unref_object RPMOSTreeSysroot *sysroot_proxy = NULL;
if (!rpmostree_option_context_parse (context, option_entries, &argc, &argv,
invocation, cancellable, NULL, NULL,
&sysroot_proxy, NULL, error))
&sysroot_proxy, error))
return FALSE;

const char *checksum = NULL;
Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-initramfs-etc.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ rpmostree_ex_builtin_initramfs_etc (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-initramfs.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ rpmostree_builtin_initramfs (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-kargs.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ rpmostree_builtin_kargs (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
4 changes: 1 addition & 3 deletions src/app/rpmostree-builtin-rebase.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ rpmostree_builtin_rebase (int argc,
const char *const *install_pkgs = NULL;
const char *const *uninstall_pkgs = NULL;

GBusType bus_type;
if (!rpmostree_option_context_parse (context,
option_entries,
&argc, &argv,
Expand All @@ -92,7 +91,6 @@ rpmostree_builtin_rebase (int argc,
&install_pkgs,
&uninstall_pkgs,
&sysroot_proxy,
&bus_type,
error))
return FALSE;

Expand All @@ -103,7 +101,7 @@ rpmostree_builtin_rebase (int argc,
}

if (!opt_bypass_driver)
if (!error_if_driver_registered (bus_type, sysroot_proxy, cancellable, error))
if (!error_if_driver_registered (sysroot_proxy, cancellable, error))
return FALSE;

if (!rpmostree_load_os_proxy (sysroot_proxy, opt_osname,
Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-refresh-md.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ rpmostree_builtin_refresh_md (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-reload.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ rpmostree_builtin_reload (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-reset.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ rpmostree_builtin_reset (int argc,
&install_pkgs,
&uninstall_pkgs,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
1 change: 0 additions & 1 deletion src/app/rpmostree-builtin-rollback.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ rpmostree_builtin_rollback (int argc,
cancellable,
NULL, NULL,
&sysroot_proxy,
NULL,
error))
return FALSE;

Expand Down
79 changes: 5 additions & 74 deletions src/app/rpmostree-builtin-start-daemon.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,9 @@ typedef enum {
static AppState appstate = APPSTATE_STARTING;
static gboolean opt_debug = FALSE;
static char *opt_sysroot = NULL;
static gint service_dbus_fd = -1;
static GOptionEntry opt_entries[] =
{
{ "debug", 'd', 0, G_OPTION_ARG_NONE, &opt_debug, "Print debug information on stderr", NULL },
{ "sysroot", 0, 0, G_OPTION_ARG_STRING, &opt_sysroot, "Use system root SYSROOT (default: /)", "SYSROOT" },
{ "dbus-peer", 0, 0, G_OPTION_ARG_INT, &service_dbus_fd, "Use a peer to peer dbus connection on this fd", "FD" },
{ NULL }
};

Expand All @@ -67,13 +64,6 @@ state_transition (AppState state)
g_main_context_wakeup (NULL);
}

static void
state_transition_fatal_err (GError *error)
{
sd_journal_print (LOG_ERR, "%s", error->message);
state_transition (APPSTATE_FLUSHING);
}

static gboolean
start_daemon (GDBusConnection *connection,
GError **error)
Expand All @@ -99,26 +89,6 @@ on_bus_name_released (GDBusConnection *connection,
state_transition (APPSTATE_EXITING);
}

static void
on_peer_acquired (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
g_autoptr(GError) error = NULL;
g_autoptr(GDBusConnection) connection = g_dbus_connection_new_finish (result, &error);
if (!connection)
{
state_transition_fatal_err (error);
return;
}

if (!start_daemon (connection, &error))
{
state_transition_fatal_err (error);
return;
}
}

static gboolean
on_sigint (gpointer user_data)
{
Expand Down Expand Up @@ -254,29 +224,6 @@ on_log_handler (const gchar *log_domain,
sd_journal_print (priority, "%s", message);
}


static gboolean
connect_to_peer (int fd, GError **error)
{
g_autoptr(GSocketConnection) stream = NULL;
g_autoptr(GSocket) socket = NULL;
g_autofree gchar *guid = NULL;

socket = g_socket_new_from_fd (fd, error);
if (!socket)
return FALSE;

stream = g_socket_connection_factory_create_connection (socket);
g_assert_nonnull (stream);

guid = g_dbus_generate_guid ();
g_dbus_connection_new (G_IO_STREAM (stream), guid,
(GDBusConnectionFlags)(G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER |
G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING),
NULL, NULL, on_peer_acquired, NULL);
return TRUE;
}

gboolean
rpmostree_builtin_start_daemon (int argc,
char **argv,
Expand Down Expand Up @@ -309,27 +256,11 @@ rpmostree_builtin_start_daemon (int argc,
g_unix_signal_add (SIGINT, on_sigint, NULL);
g_unix_signal_add (SIGTERM, on_sigint, NULL);

g_autoptr(GDBusConnection) bus = NULL;
if (service_dbus_fd == -1)
{
GBusType bus_type;

/* To facilitate testing, use whichever message bus activated
* this process. If the process was started directly, assume
* the system bus. */
if (g_getenv ("DBUS_STARTER_BUS_TYPE") != NULL)
bus_type = G_BUS_TYPE_STARTER;
else
bus_type = G_BUS_TYPE_SYSTEM;

/* Get an explicit ref to the bus so we can use it later */
bus = g_bus_get_sync (bus_type, NULL, error);
if (!bus)
return FALSE;
if (!start_daemon (bus, error))
return FALSE;
}
else if (!connect_to_peer (service_dbus_fd, error))
/* Get an explicit ref to the bus so we can use it later */
g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, error);
if (!bus)
return FALSE;
if (!start_daemon (bus, error))
return FALSE;

state_transition (APPSTATE_RUNNING);
Expand Down
Loading

0 comments on commit 36237b9

Please sign in to comment.