gnome-initial-setup/honor-firstboot-disabled.patch
2020-07-20 19:33:46 +02:00

87 lines
3.1 KiB
Diff

From 222ab284bb504c7d5b4160c0aa909a9dfc783dee Mon Sep 17 00:00:00 2001
From: Rui Matos <tiagomatos@gmail.com>
Date: Mon, 23 Jan 2017 19:42:44 +0100
Subject: [PATCH] Exit gracefully if we are disabled systemwide
Sysadmins might want to disable any kind of initial setup for their
users, perhaps because they pre-configure their environments. We
should provide an easy way to do it.
At least the anaconda installer provides an option to skip any kind
post-install setup tools so, for now we're only adding support for
that but more might be added in the future.
https://bugzilla.gnome.org/show_bug.cgi?id=777707
---
gnome-initial-setup/gnome-initial-setup.c | 34 +++++++++++++++++++++++
meson.build | 1 +
2 files changed, 35 insertions(+)
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 12625b8..c770980 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -228,6 +228,31 @@ get_mode (void)
return GIS_DRIVER_MODE_NEW_USER;
}
+static gboolean
+initial_setup_disabled_by_anaconda (void)
+{
+ GKeyFile *key_file;
+ const gchar *file_name = SYSCONFDIR "/sysconfig/anaconda";
+ gboolean disabled = FALSE;
+ GError *error = NULL;
+
+ key_file = g_key_file_new ();
+ if (!g_key_file_load_from_file (key_file, file_name, G_KEY_FILE_NONE, &error)) {
+ if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT) &&
+ !g_error_matches (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) {
+ g_warning ("Could not read %s: %s", file_name, error->message);
+ }
+ g_error_free (error);
+ goto out;
+ }
+
+ disabled = g_key_file_get_boolean (key_file, "General",
+ "post_install_tools_disabled", NULL);
+ out:
+ g_key_file_unref (key_file);
+ return disabled;
+}
+
int
main (int argc, char *argv[])
{
@@ -268,6 +293,15 @@ main (int argc, char *argv[])
skipped_pages = g_ptr_array_new_with_free_func ((GDestroyNotify) gtk_widget_destroy);
mode = get_mode ();
+ /* We only do this in existing-user mode, because if gdm launches us
+ * in new-user mode and we just exit, gdm's special g-i-s session
+ * never terminates. */
+ if (initial_setup_disabled_by_anaconda () &&
+ mode == GIS_DRIVER_MODE_EXISTING_USER) {
+ gis_ensure_stamp_files ();
+ exit (EXIT_SUCCESS);
+ }
+
/* When we are running as the gnome-initial-setup user we
* dont have a normal user session and need to initialize
* the keyring manually so that we can pass the credentials
diff --git a/meson.build b/meson.build
index b83179b..4740f08 100644
--- a/meson.build
+++ b/meson.build
@@ -24,6 +24,7 @@ conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
conf.set_quoted('GNOMELOCALEDIR', locale_dir)
conf.set_quoted('PKGDATADIR', pkgdata_dir)
conf.set_quoted('PKGSYSCONFDIR', pkgsysconf_dir)
+conf.set_quoted('SYSCONFDIR', sysconf_dir)
conf.set('SECRET_API_SUBJECT_TO_CHANGE', true)
conf.set_quoted('G_LOG_DOMAIN', 'InitialSetup')
conf.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_2_64')
--
2.26.2