Honor anaconda's firstboot being disabled
This commit is contained in:
parent
3df603c085
commit
ea6cfffa85
@ -5,12 +5,13 @@
|
||||
|
||||
Name: gnome-initial-setup
|
||||
Version: 3.23.1
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: Bootstrapping your OS
|
||||
|
||||
License: GPLv2+
|
||||
URL: https://wiki.gnome.org/Design/OS/InitialSetup
|
||||
Source0: https://download.gnome.org/sources/%{name}/3.23/%{name}-%{version}.tar.xz
|
||||
Patch0: honor-firstboot-disabled.patch
|
||||
|
||||
BuildRequires: krb5-devel
|
||||
BuildRequires: desktop-file-utils
|
||||
@ -63,6 +64,7 @@ you through configuring it. It is integrated with gdm.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
%configure --enable-software-sources
|
||||
@ -103,6 +105,9 @@ useradd -rM -d /run/gnome-initial-setup/ -s /sbin/nologin %{name} &>/dev/null ||
|
||||
%{_datadir}/polkit-1/rules.d/20-gnome-initial-setup.rules
|
||||
|
||||
%changelog
|
||||
* Tue Jan 31 2017 Rui Matos <rmatos@redhat.com> - 3.23.1-2
|
||||
- Honor anaconda's firstboot being disabled
|
||||
|
||||
* Sun Oct 30 2016 Kalev Lember <klember@redhat.com> - 3.23.1-1
|
||||
- Update to 3.23.1
|
||||
|
||||
|
242
honor-firstboot-disabled.patch
Normal file
242
honor-firstboot-disabled.patch
Normal file
@ -0,0 +1,242 @@
|
||||
From 20266d351694633d125fc2f34d7738e8bbbd60bd Mon Sep 17 00:00:00 2001
|
||||
From: Rui Matos <tiagomatos@gmail.com>
|
||||
Date: Tue, 24 Jan 2017 19:19:30 +0100
|
||||
Subject: [PATCH 1/3] summary: Move stamp file creation to a global function
|
||||
|
||||
This will be useful in other places. Note that the "done" stamp file
|
||||
is now created in both existing user and new user modes.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=777707
|
||||
---
|
||||
gnome-initial-setup/gnome-initial-setup.c | 21 +++++++++++++++++
|
||||
gnome-initial-setup/gnome-initial-setup.h | 2 ++
|
||||
.../pages/summary/gis-summary-page.c | 26 +---------------------
|
||||
3 files changed, 24 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
|
||||
index 396bbea..2ec91b9 100644
|
||||
--- a/gnome-initial-setup/gnome-initial-setup.c
|
||||
+++ b/gnome-initial-setup/gnome-initial-setup.c
|
||||
@@ -242,3 +242,24 @@ main (int argc, char *argv[])
|
||||
g_option_context_free (context);
|
||||
return status;
|
||||
}
|
||||
+
|
||||
+void
|
||||
+gis_ensure_stamp_files (void)
|
||||
+{
|
||||
+ gchar *file;
|
||||
+ GError *error = NULL;
|
||||
+
|
||||
+ file = g_build_filename (g_get_user_config_dir (), "run-welcome-tour", NULL);
|
||||
+ if (!g_file_set_contents (file, "yes", -1, &error)) {
|
||||
+ g_warning ("Unable to create %s: %s", file, error->message);
|
||||
+ g_clear_error (&error);
|
||||
+ }
|
||||
+ g_free (file);
|
||||
+
|
||||
+ file = g_build_filename (g_get_user_config_dir (), "gnome-initial-setup-done", NULL);
|
||||
+ if (!g_file_set_contents (file, "yes", -1, &error)) {
|
||||
+ g_warning ("Unable to create %s: %s", file, error->message);
|
||||
+ g_clear_error (&error);
|
||||
+ }
|
||||
+ g_free (file);
|
||||
+}
|
||||
diff --git a/gnome-initial-setup/gnome-initial-setup.h b/gnome-initial-setup/gnome-initial-setup.h
|
||||
index 6dce853..dc5cf60 100644
|
||||
--- a/gnome-initial-setup/gnome-initial-setup.h
|
||||
+++ b/gnome-initial-setup/gnome-initial-setup.h
|
||||
@@ -35,5 +35,7 @@ typedef struct _GisPage GisPage;
|
||||
#include "gis-page.h"
|
||||
#include "gis-keyring.h"
|
||||
|
||||
+void gis_ensure_stamp_files (void);
|
||||
+
|
||||
#endif /* __GNOME_INITIAL_SETUP_H__ */
|
||||
|
||||
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.c b/gnome-initial-setup/pages/summary/gis-summary-page.c
|
||||
index 2d5acf4..1c624d7 100644
|
||||
--- a/gnome-initial-setup/pages/summary/gis-summary-page.c
|
||||
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.c
|
||||
@@ -214,32 +214,9 @@ log_user_in (GisSummaryPage *page)
|
||||
}
|
||||
|
||||
static void
|
||||
-add_setup_done_file (void)
|
||||
-{
|
||||
- gchar *gis_done_path;
|
||||
- GError *error = NULL;
|
||||
-
|
||||
- gis_done_path = g_build_filename (g_get_user_config_dir (),
|
||||
- "gnome-initial-setup-done",
|
||||
- NULL);
|
||||
-
|
||||
- if (!g_file_set_contents (gis_done_path, "yes", -1, &error)) {
|
||||
- g_warning ("Unable to create %s: %s", gis_done_path, error->message);
|
||||
- g_clear_error (&error);
|
||||
- }
|
||||
-
|
||||
- g_free (gis_done_path);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
done_cb (GtkButton *button, GisSummaryPage *page)
|
||||
{
|
||||
- gchar *file;
|
||||
-
|
||||
- /* the tour is triggered by $XDG_CONFIG_HOME/run-welcome-tour */
|
||||
- file = g_build_filename (g_get_user_config_dir (), "run-welcome-tour", NULL);
|
||||
- g_file_set_contents (file, "yes", -1, NULL);
|
||||
- g_free (file);
|
||||
+ gis_ensure_stamp_files ();
|
||||
|
||||
switch (gis_driver_get_mode (GIS_PAGE (page)->driver))
|
||||
{
|
||||
@@ -248,7 +225,6 @@ done_cb (GtkButton *button, GisSummaryPage *page)
|
||||
log_user_in (page);
|
||||
break;
|
||||
case GIS_DRIVER_MODE_EXISTING_USER:
|
||||
- add_setup_done_file ();
|
||||
g_application_quit (G_APPLICATION (GIS_PAGE (page)->driver));
|
||||
default:
|
||||
break;
|
||||
--
|
||||
2.9.3
|
||||
|
||||
From 7106bdb98479142acc5087da3a104df0235baaf6 Mon Sep 17 00:00:00 2001
|
||||
From: Rui Matos <tiagomatos@gmail.com>
|
||||
Date: Tue, 24 Jan 2017 19:22:09 +0100
|
||||
Subject: [PATCH 2/3] copy-worker: Copy the "done" stamp file too
|
||||
|
||||
For consistency, instead of creating the "done" stamp file here, we
|
||||
can let g-i-s handle that and just copy it along with all the others.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=777707
|
||||
---
|
||||
gnome-initial-setup/gnome-initial-setup-copy-worker.c | 10 +---------
|
||||
1 file changed, 1 insertion(+), 9 deletions(-)
|
||||
|
||||
diff --git a/gnome-initial-setup/gnome-initial-setup-copy-worker.c b/gnome-initial-setup/gnome-initial-setup-copy-worker.c
|
||||
index 500d274..c041399 100644
|
||||
--- a/gnome-initial-setup/gnome-initial-setup-copy-worker.c
|
||||
+++ b/gnome-initial-setup/gnome-initial-setup-copy-worker.c
|
||||
@@ -71,9 +71,7 @@ main (int argc,
|
||||
{
|
||||
GFile *src;
|
||||
GFile *dest;
|
||||
- GError *error = NULL;
|
||||
char *initial_setup_homedir;
|
||||
- gchar *gis_done_file_path;
|
||||
|
||||
initial_setup_homedir = get_gnome_initial_setup_home_dir ();
|
||||
if (initial_setup_homedir == NULL)
|
||||
@@ -90,17 +88,11 @@ main (int argc,
|
||||
#define FILE(path) \
|
||||
move_file_from_homedir (src, dest, path);
|
||||
|
||||
+ FILE (".config/gnome-initial-setup-done");
|
||||
FILE (".config/run-welcome-tour");
|
||||
FILE (".config/dconf/user");
|
||||
FILE (".config/goa-1.0/accounts.conf");
|
||||
FILE (".local/share/keyrings/login.keyring");
|
||||
|
||||
- gis_done_file_path = g_build_filename (g_get_user_config_dir (),
|
||||
- "gnome-initial-setup-done",
|
||||
- NULL);
|
||||
-
|
||||
- if (!g_file_set_contents (gis_done_file_path, "yes", -1, &error))
|
||||
- g_warning ("Unable to create %s: %s", gis_done_file_path, error->message);
|
||||
-
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
--
|
||||
2.9.3
|
||||
|
||||
From b2659246f3e2afcbf51a92ee6839775de4e6487a Mon Sep 17 00:00:00 2001
|
||||
From: Rui Matos <tiagomatos@gmail.com>
|
||||
Date: Mon, 23 Jan 2017 19:42:44 +0100
|
||||
Subject: [PATCH 3/3] 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/Makefile.am | 3 ++-
|
||||
gnome-initial-setup/gnome-initial-setup.c | 34 +++++++++++++++++++++++++++++++
|
||||
2 files changed, 36 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gnome-initial-setup/Makefile.am b/gnome-initial-setup/Makefile.am
|
||||
index d275dda..465b598 100644
|
||||
--- a/gnome-initial-setup/Makefile.am
|
||||
+++ b/gnome-initial-setup/Makefile.am
|
||||
@@ -11,7 +11,8 @@ AM_CPPFLAGS = \
|
||||
-DUIDIR="\"$(uidir)\"" \
|
||||
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
|
||||
-DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \
|
||||
- -DDATADIR=\""$(datadir)"\"
|
||||
+ -DDATADIR=\""$(datadir)"\" \
|
||||
+ -DSYSCONFDIR=\""$(sysconfdir)"\"
|
||||
|
||||
libexec_PROGRAMS = gnome-initial-setup gnome-initial-setup-copy-worker
|
||||
|
||||
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
|
||||
index 2ec91b9..10b5f84 100644
|
||||
--- a/gnome-initial-setup/gnome-initial-setup.c
|
||||
+++ b/gnome-initial-setup/gnome-initial-setup.c
|
||||
@@ -186,6 +186,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[])
|
||||
{
|
||||
@@ -226,6 +251,15 @@ main (int argc, char *argv[])
|
||||
|
||||
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
|
||||
--
|
||||
2.9.3
|
||||
|
Loading…
Reference in New Issue
Block a user