e8d2323085
... and also rebase honor-firstboot-disabled.patch to deal with gis_ensure_stamp_files() now taking a GjsDriver parameter, and update it to use g_autoptr(). I've also now submitted it upstream after talking to wjt: https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/merge_requests/101
81 lines
2.8 KiB
Diff
81 lines
2.8 KiB
Diff
From 538a8fa09a02f682496f98bda8f4f4a5566eee86 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 | 28 +++++++++++++++++++++++
|
|
meson.build | 1 +
|
|
2 files changed, 29 insertions(+)
|
|
|
|
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
|
|
index 107be55..0ab987a 100644
|
|
--- a/gnome-initial-setup/gnome-initial-setup.c
|
|
+++ b/gnome-initial-setup/gnome-initial-setup.c
|
|
@@ -240,6 +240,24 @@ get_mode (void)
|
|
return GIS_DRIVER_MODE_NEW_USER;
|
|
}
|
|
|
|
+static gboolean
|
|
+initial_setup_disabled_by_anaconda (void)
|
|
+{
|
|
+ const gchar *file_name = SYSCONFDIR "/sysconfig/anaconda";
|
|
+ g_autoptr(GError) error = NULL;
|
|
+ g_autoptr(GKeyFile) 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);
|
|
+ }
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ return g_key_file_get_boolean (key_file, "General", "post_install_tools_disabled", NULL);
|
|
+}
|
|
+
|
|
int
|
|
main (int argc, char *argv[])
|
|
{
|
|
@@ -289,6 +307,16 @@ main (int argc, char *argv[])
|
|
gis_ensure_login_keyring ();
|
|
|
|
driver = gis_driver_new (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 (driver);
|
|
+ exit (EXIT_SUCCESS);
|
|
+ }
|
|
+
|
|
g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL);
|
|
status = g_application_run (G_APPLICATION (driver), argc, argv);
|
|
|
|
diff --git a/meson.build b/meson.build
|
|
index 0fd952f..13986ac 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -25,6 +25,7 @@ conf.set_quoted('GNOMELOCALEDIR', locale_dir)
|
|
conf.set_quoted('PKGDATADIR', pkgdata_dir)
|
|
conf.set_quoted('DATADIR', data_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
|
|
|