Update reduce initial setup redundancy patch again

This commit is contained in:
Michael Catanzaro 2018-03-31 12:16:30 -05:00
parent b67a9e192e
commit 6bc84dc4da
2 changed files with 65 additions and 34 deletions

View File

@ -6,7 +6,7 @@
Name: gnome-initial-setup Name: gnome-initial-setup
Version: 3.28.0 Version: 3.28.0
Release: 2%{?dist} Release: 3%{?dist}
Summary: Bootstrapping your OS Summary: Bootstrapping your OS
License: GPLv2+ License: GPLv2+
@ -112,6 +112,9 @@ useradd -rM -d /run/gnome-initial-setup/ -s /sbin/nologin %{name} &>/dev/null ||
%{_localstatedir}/lib/gnome-initial-setup/vendor.conf %{_localstatedir}/lib/gnome-initial-setup/vendor.conf
%changelog %changelog
* Fri Mar 30 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-3
- Update reduce initial setup redundancy patch again
* Fri Mar 30 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-2 * Fri Mar 30 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-2
- Update reduce initial setup redundancy patches - Update reduce initial setup redundancy patches

View File

@ -1,4 +1,4 @@
From 59e732ce83059c16540d7208446c99b8e3937e8c Mon Sep 17 00:00:00 2001 From de07cbc69b8f64b1a7708f454f029814d3c48b10 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com> From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Thu, 15 Feb 2018 21:08:38 -0600 Date: Thu, 15 Feb 2018 21:08:38 -0600
Subject: [PATCH] Reduce initial setup redundancy Subject: [PATCH] Reduce initial setup redundancy
@ -8,12 +8,14 @@ This contains patches from these bugs:
https://bugzilla.gnome.org/show_bug.cgi?id=793501 https://bugzilla.gnome.org/show_bug.cgi?id=793501
https://bugzilla.gnome.org/show_bug.cgi?id=794166 https://bugzilla.gnome.org/show_bug.cgi?id=794166
Some work is by Peng Wu and some by Michael Catanzaro. modified a bit to not conflict with each other.
This is a combination of work by Peng Wu and Michael Catanzaro.
--- ---
gnome-initial-setup/gis-assistant.c | 3 +- gnome-initial-setup/gis-assistant.c | 3 +-
gnome-initial-setup/gis-page.c | 8 + gnome-initial-setup/gis-page.c | 8 +
gnome-initial-setup/gis-page.h | 2 + gnome-initial-setup/gis-page.h | 2 +
gnome-initial-setup/gnome-initial-setup.c | 53 ++++-- gnome-initial-setup/gnome-initial-setup.c | 77 +++++++--
.../pages/account/gis-account-page.h | 2 - .../pages/account/gis-account-page.h | 2 -
.../pages/account/gis-account-pages.c | 9 +- .../pages/account/gis-account-pages.c | 9 +-
.../pages/account/gis-account-pages.h | 2 +- .../pages/account/gis-account-pages.h | 2 +-
@ -40,7 +42,7 @@ Some work is by Peng Wu and some by Michael Catanzaro.
.../pages/summary/gis-summary-page.h | 2 +- .../pages/summary/gis-summary-page.h | 2 +-
.../pages/timezone/gis-timezone-page.c | 9 +- .../pages/timezone/gis-timezone-page.c | 9 +-
.../pages/timezone/gis-timezone-page.h | 2 +- .../pages/timezone/gis-timezone-page.h | 2 +-
30 files changed, 270 insertions(+), 138 deletions(-) 30 files changed, 296 insertions(+), 136 deletions(-)
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index 37ed563..0a3bd05 100644 index 37ed563..0a3bd05 100644
@ -57,7 +59,7 @@ index 37ed563..0a3bd05 100644
} }
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index e28f573..39fe613 100644 index e28f573..8564935 100644
--- a/gnome-initial-setup/gis-page.c --- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c +++ b/gnome-initial-setup/gis-page.c
@@ -382,3 +382,11 @@ gis_page_shown (GisPage *page) @@ -382,3 +382,11 @@ gis_page_shown (GisPage *page)
@ -70,7 +72,7 @@ index e28f573..39fe613 100644
+{ +{
+ if (GIS_PAGE_GET_CLASS (page)->skip) + if (GIS_PAGE_GET_CLASS (page)->skip)
+ return GIS_PAGE_GET_CLASS (page)->skip (page); + return GIS_PAGE_GET_CLASS (page)->skip (page);
+ return FALSE; + return TRUE;
+} +}
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index 02e3085..1f11578 100644 index 02e3085..1f11578 100644
@ -93,18 +95,17 @@ index 02e3085..1f11578 100644
G_END_DECLS G_END_DECLS
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 5a988a3..0fdfb45 100644 index 5a988a3..4558810 100644
--- a/gnome-initial-setup/gnome-initial-setup.c --- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c +++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -49,12 +49,15 @@ @@ -50,11 +50,15 @@
#include "pages/password/gis-password-page.h"
#include "pages/summary/gis-summary-page.h" #include "pages/summary/gis-summary-page.h"
-#define VENDOR_PAGES_GROUP "pages" #define VENDOR_PAGES_GROUP "pages"
-#define VENDOR_PAGES_SKIP_KEY "skip" -#define VENDOR_PAGES_SKIP_KEY "skip"
+#define VENDOR_NEW_USER_GROUP "new user"
+#define VENDOR_EXISTING_USER_GROUP "existing user"
+#define VENDOR_SKIP_KEY "skip" +#define VENDOR_SKIP_KEY "skip"
+#define VENDOR_NEW_USER_ONLY_KEY "new_user_only"
+#define VENDOR_EXISTING_USER_ONLY_KEY "existing_user_only"
static gboolean force_existing_user_mode; static gboolean force_existing_user_mode;
@ -115,48 +116,75 @@ index 5a988a3..0fdfb45 100644
typedef struct { typedef struct {
const gchar *page_id; const gchar *page_id;
@@ -101,20 +104,23 @@ should_skip_page (GisDriver *driver, @@ -101,21 +105,40 @@ should_skip_page (GisDriver *driver,
} }
static gchar ** static gchar **
-pages_to_skip_from_file (void) -pages_to_skip_from_file (void)
+strv_append (gchar **a,
+ gchar **b)
+{
+ guint n = g_strv_length (a);
+ guint m = g_strv_length (b);
+
+ a = g_renew (gchar *, a, n + m + 1);
+ for (guint i = 0; i < m; i++)
+ a[n + i] = g_strdup (b[i]);
+ a[n + m] = NULL;
+
+ return a;
+}
+
+static gchar **
+pages_to_skip_from_file (gboolean is_new_user) +pages_to_skip_from_file (gboolean is_new_user)
{ {
GKeyFile *skip_pages_file; GKeyFile *skip_pages_file;
gchar **skip_pages = NULL; gchar **skip_pages = NULL;
+ gchar **additional_skip_pages = NULL;
GError *error = NULL; GError *error = NULL;
/* VENDOR_CONF_FILE points to a keyfile containing vendor customization /* VENDOR_CONF_FILE points to a keyfile containing vendor customization
- * options. This code will look for options under the "pages" group, and * options. This code will look for options under the "pages" group, and
- * supports the following keys: * supports the following keys:
+ * options. This code will look for options under the "new user" and - * - skip (optional): list of pages to be skipped.
+ * "existing user" groups, and supports the following keys: + * - skip (optional): list of pages to be skipped always
* - skip (optional): list of pages to be skipped. + * - new_user_only (optional): list of pages to be skipped in existing user mode
+ * - existing_user_only (optional): list of pages to be skipped in new user mode
* *
- * This is how this file would look on a vendor image: - * This is how this file would look on a vendor image:
+ * This is how this file might look on a vendor image: + * This is how this file might look on a vendor image:
+ *
+ * [new user]
+ * skip=language;keyboard
* *
- * [pages] * [pages]
+ * [existing user] - * skip=language
* skip=language + * skip=timezone
+ * existing_user_only=language;keyboard
*/ */
skip_pages_file = g_key_file_new (); skip_pages_file = g_key_file_new ();
@@ -127,8 +133,9 @@ pages_to_skip_from_file (void) if (!g_key_file_load_from_file (skip_pages_file, VENDOR_CONF_FILE,
@@ -127,8 +150,20 @@ pages_to_skip_from_file (void)
goto out; goto out;
} }
- skip_pages = g_key_file_get_string_list (skip_pages_file, VENDOR_PAGES_GROUP, - skip_pages = g_key_file_get_string_list (skip_pages_file, VENDOR_PAGES_GROUP,
- VENDOR_PAGES_SKIP_KEY, NULL, NULL); - VENDOR_PAGES_SKIP_KEY, NULL, NULL);
+ skip_pages = g_key_file_get_string_list (skip_pages_file, + skip_pages = g_key_file_get_string_list (skip_pages_file,
+ is_new_user ? VENDOR_NEW_USER_GROUP : VENDOR_EXISTING_USER_GROUP, + VENDOR_PAGES_GROUP,
+ VENDOR_SKIP_KEY, NULL, NULL); + VENDOR_SKIP_KEY, NULL, NULL);
+ additional_skip_pages = g_key_file_get_string_list (skip_pages_file,
+ VENDOR_PAGES_GROUP,
+ is_new_user ? VENDOR_EXISTING_USER_ONLY_KEY : VENDOR_NEW_USER_ONLY_KEY,
+ NULL, NULL);
+
+ if (!skip_pages && additional_skip_pages) {
+ skip_pages = additional_skip_pages;
+ } else if (skip_pages && additional_skip_pages) {
+ skip_pages = strv_append (skip_pages, additional_skip_pages);
+ g_strfreev (additional_skip_pages);
+ }
out: out:
g_key_file_free (skip_pages_file); g_key_file_free (skip_pages_file);
@@ -159,16 +166,14 @@ static void @@ -159,16 +194,14 @@ static void
rebuild_pages_cb (GisDriver *driver) rebuild_pages_cb (GisDriver *driver)
{ {
PageData *page_data; PageData *page_data;
@ -175,7 +203,7 @@ index 5a988a3..0fdfb45 100644
page_data = page_table; page_data = page_table;
if (current_page != NULL) { if (current_page != NULL) {
@@ -182,14 +187,23 @@ rebuild_pages_cb (GisDriver *driver) @@ -182,14 +215,23 @@ rebuild_pages_cb (GisDriver *driver)
} }
is_new_user = (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER); is_new_user = (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER);
@ -185,12 +213,12 @@ index 5a988a3..0fdfb45 100644
- if (page_data->new_user_only && !is_new_user) - if (page_data->new_user_only && !is_new_user)
- continue; - continue;
+ skipped = FALSE; + skipped = FALSE;
+
- if (should_skip_page (driver, page_data->page_id, skip_pages))
+ if ((page_data->new_user_only && !is_new_user) || + if ((page_data->new_user_only && !is_new_user) ||
+ (should_skip_page (driver, page_data->page_id, skip_pages))) + (should_skip_page (driver, page_data->page_id, skip_pages)))
+ skipped = TRUE; + skipped = TRUE;
+
- if (should_skip_page (driver, page_data->page_id, skip_pages))
+ page = page_data->prepare_page_func (driver); + page = page_data->prepare_page_func (driver);
+ if (!page) + if (!page)
continue; continue;
@ -203,7 +231,7 @@ index 5a988a3..0fdfb45 100644
} }
g_strfreev (skip_pages); g_strfreev (skip_pages);
@@ -267,6 +281,7 @@ main (int argc, char *argv[]) @@ -267,6 +309,7 @@ main (int argc, char *argv[])
} }
#endif #endif
@ -211,7 +239,7 @@ index 5a988a3..0fdfb45 100644
mode = get_mode (); mode = get_mode ();
/* We only do this in existing-user mode, because if gdm launches us /* We only do this in existing-user mode, because if gdm launches us
@@ -290,6 +305,8 @@ main (int argc, char *argv[]) @@ -290,6 +333,8 @@ main (int argc, char *argv[])
g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL); g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL);
status = g_application_run (G_APPLICATION (driver), argc, argv); status = g_application_run (G_APPLICATION (driver), argc, argv);