Upgrade to 3.27.90 and add reduce initial setup redundancy patches

This commit is contained in:
Michael Catanzaro 2018-02-16 11:46:07 -06:00
parent b2d4761b01
commit aba2fd8da7
5 changed files with 343 additions and 6 deletions

1
.gitignore vendored
View File

@ -54,3 +54,4 @@
/gnome-initial-setup-3.25.4.tar.xz
/gnome-initial-setup-3.25.92.tar.xz
/gnome-initial-setup-3.26.0.tar.xz
/gnome-initial-setup-3.27.90.tar.xz

View File

@ -0,0 +1,98 @@
From a477f87d4883c383dd8bac61193b81ad0d85a77c Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Thu, 15 Feb 2018 21:12:08 -0600
Subject: [PATCH 2/2] Allow skipping pages only in new/existing user modes
This makes the skip file a bit more powerful. Instead of specifying
pages that will always be skipped, it's now possible to specify pages to
be skipped in just new user mode or just existing user mode. This way we
can hide pages that are redundant with distro installers in new user
mode (firstboot), but still show them otherwise.
To skip a page always, like Endless has been doing, just put it in
both sections.
https://bugzilla.gnome.org/show_bug.cgi?id=793501
---
gnome-initial-setup/gnome-initial-setup.c | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 6cca10b..622fb82 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -49,8 +49,9 @@
#include "pages/password/gis-password-page.h"
#include "pages/summary/gis-summary-page.h"
-#define VENDOR_PAGES_GROUP "pages"
-#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"
static gboolean force_existing_user_mode;
@@ -101,20 +102,23 @@ should_skip_page (GisDriver *driver,
}
static gchar **
-pages_to_skip_from_file (void)
+pages_to_skip_from_file (gboolean is_new_user)
{
GKeyFile *skip_pages_file;
gchar **skip_pages = NULL;
GError *error = NULL;
/* VENDOR_CONF_FILE points to a keyfile containing vendor customization
- * options. This code will look for options under the "pages" group, and
- * supports the following keys:
+ * options. This code will look for options under the "new user" and
+ * "existing user" groups, and supports the following keys:
* - skip (optional): list of pages to be skipped.
*
- * This is how this file would look on a vendor image:
+ * This is how this file might look on a vendor image:
*
- * [pages]
+ * [new user]
+ * skip=language;keyboard
+ *
+ * [existing user]
* skip=language
*/
skip_pages_file = g_key_file_new ();
@@ -127,8 +131,9 @@ pages_to_skip_from_file (void)
goto out;
}
- skip_pages = g_key_file_get_string_list (skip_pages_file, VENDOR_PAGES_GROUP,
- VENDOR_PAGES_SKIP_KEY, NULL, NULL);
+ skip_pages = g_key_file_get_string_list (skip_pages_file,
+ is_new_user ? VENDOR_NEW_USER_GROUP : VENDOR_EXISTING_USER_GROUP,
+ VENDOR_SKIP_KEY, NULL, NULL);
out:
g_key_file_free (skip_pages_file);
@@ -166,9 +171,6 @@ rebuild_pages_cb (GisDriver *driver)
assistant = gis_driver_get_assistant (driver);
current_page = gis_assistant_get_current_page (assistant);
-
- skip_pages = pages_to_skip_from_file ();
-
page_data = page_table;
if (current_page != NULL) {
@@ -182,6 +184,8 @@ rebuild_pages_cb (GisDriver *driver)
}
is_new_user = (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER);
+ skip_pages = pages_to_skip_from_file (is_new_user);
+
for (; page_data->page_id != NULL; ++page_data) {
if (page_data->new_user_only && !is_new_user)
continue;
--
2.14.3

View File

@ -5,14 +5,17 @@
%global geoclue_version 2.3.1
Name: gnome-initial-setup
Version: 3.26.0
Release: 5%{?dist}
Version: 3.27.90
Release: 1%{?dist}
Summary: Bootstrapping your OS
License: GPLv2+
URL: https://wiki.gnome.org/Design/OS/InitialSetup
Source0: https://download.gnome.org/sources/%{name}/3.26/%{name}-%{version}.tar.xz
Source0: https://download.gnome.org/sources/%{name}/3.27/%{name}-%{version}.tar.xz
Patch0: honor-firstboot-disabled.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=793501
Patch1: welcome-screen.patch
Patch2: enhanced-page-skipping.patch
BuildRequires: krb5-devel
BuildRequires: desktop-file-utils
@ -64,8 +67,7 @@ a good setup experience to welcome you to your system, and walks
you through configuring it. It is integrated with gdm.
%prep
%setup -q
%patch0 -p1
%autosetup -p1
%build
%configure --enable-software-sources
@ -106,6 +108,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
* Fri Feb 16 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.27.90-1
- Upgrade to 3.27.90 and add reduce initial setup redundancy patches
* Tue Feb 13 2018 Björn Esser <besser82@fedoraproject.org> - 3.26.0-5
- Rebuild against newer gnome-desktop3 package

View File

@ -1 +1 @@
SHA512 (gnome-initial-setup-3.26.0.tar.xz) = 5ed7a21e21cdcdc0f13d8d24acce1c0779d48bedac514642615b1df50340be9c8d0443c43396a0419d0b86ba97df391ce161dd03b1591ef6d73fb5318ffd06c1
SHA512 (gnome-initial-setup-3.27.90.tar.xz) = e3e0ee598df9b57380fd2eeb30a2f45135b9aa7c002c1be1c9dd2c37a1cef97645089794541d08bd3254d8852a7b8cd118529fcdd25418a2f44d9a87f398fb91

233
welcome-screen.patch Normal file
View File

@ -0,0 +1,233 @@
From 19fe2ffa60b4998be6a77c69e449b30c2df99fb1 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Thu, 15 Feb 2018 21:08:38 -0600
Subject: [PATCH 1/2] Show welcome screen if language page is skipped
We can't *really* skip the language page, because we need to display some
sort of welcome screen. In this case, let's just hide the language
selection element. To make this look decent, the icon needs to be a bit
bigger, and we need to center everything. Turns out, these changes look
fine even when the language page is not skipped, so they don't need to
be conditional on that.
https://bugzilla.gnome.org/show_bug.cgi?id=793501
---
gnome-initial-setup/gnome-initial-setup.c | 7 +-
.../pages/language/gis-language-page.c | 113 +++++++++++++++++----
.../pages/language/gis-language-page.h | 1 +
.../pages/language/gis-language-page.ui | 6 +-
4 files changed, 102 insertions(+), 25 deletions(-)
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 5671cae..6cca10b 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -186,8 +186,13 @@ rebuild_pages_cb (GisDriver *driver)
if (page_data->new_user_only && !is_new_user)
continue;
- if (should_skip_page (driver, page_data->page_id, skip_pages))
+ if (should_skip_page (driver, page_data->page_id, skip_pages)) {
+ /* Language page is special, because we always want to show the greeeting
+ * even if this page is to be skipped. */
+ if (strcmp (page_data->page_id, "language") == 0)
+ gis_prepare_language_page_without_language_selection (driver);
continue;
+ }
page_data->prepare_page_func (driver);
}
diff --git a/gnome-initial-setup/pages/language/gis-language-page.c b/gnome-initial-setup/pages/language/gis-language-page.c
index ea94c82..2349103 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.c
+++ b/gnome-initial-setup/pages/language/gis-language-page.c
@@ -45,6 +45,7 @@ struct _GisLanguagePagePrivate
GtkWidget *logo;
GtkWidget *welcome_widget;
GtkWidget *language_chooser;
+ gboolean show_language_chooser;
GDBusProxy *localed;
GPermission *permission;
@@ -56,6 +57,53 @@ typedef struct _GisLanguagePagePrivate GisLanguagePagePrivate;
G_DEFINE_TYPE_WITH_PRIVATE (GisLanguagePage, gis_language_page, GIS_TYPE_PAGE);
+enum
+{
+ PROP_0,
+ PROP_SHOW_LANGUAGE_CHOOSER,
+ PROP_LAST,
+};
+
+static GParamSpec *obj_props[PROP_LAST];
+
+static void
+gis_language_page_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GisLanguagePage *page = GIS_LANGUAGE_PAGE (object);
+ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page);
+ switch (prop_id)
+ {
+ case PROP_SHOW_LANGUAGE_CHOOSER:
+ g_value_set_boolean (value, priv->show_language_chooser);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gis_language_page_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GisLanguagePage *page = GIS_LANGUAGE_PAGE (object);
+ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page);
+ switch (prop_id)
+ {
+ case PROP_SHOW_LANGUAGE_CHOOSER:
+ priv->show_language_chooser = g_value_get_boolean (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
static void
set_localed_locale (GisLanguagePage *self)
{
@@ -259,28 +307,33 @@ gis_language_page_constructed (GObject *object)
update_distro_logo (page);
- g_signal_connect (priv->language_chooser, "notify::language",
- G_CALLBACK (language_changed), page);
- g_signal_connect (priv->language_chooser, "confirm",
- G_CALLBACK (language_confirmed), page);
-
- /* If we're in new user mode then we're manipulating system settings */
- if (gis_driver_get_mode (GIS_PAGE (page)->driver) == GIS_DRIVER_MODE_NEW_USER)
+ if (priv->show_language_chooser)
{
- priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL);
-
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
- g_dbus_proxy_new (bus,
- G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
- NULL,
- "org.freedesktop.locale1",
- "/org/freedesktop/locale1",
- "org.freedesktop.locale1",
- priv->cancellable,
- (GAsyncReadyCallback) localed_proxy_ready,
- object);
- g_object_unref (bus);
- }
+ gtk_widget_show (priv->language_chooser);
+
+ g_signal_connect (priv->language_chooser, "notify::language",
+ G_CALLBACK (language_changed), page);
+ g_signal_connect (priv->language_chooser, "confirm",
+ G_CALLBACK (language_confirmed), page);
+
+ /* If we're in new user mode then we're manipulating system settings */
+ if (gis_driver_get_mode (GIS_PAGE (page)->driver) == GIS_DRIVER_MODE_NEW_USER)
+ {
+ priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL);
+
+ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+ g_dbus_proxy_new (bus,
+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
+ NULL,
+ "org.freedesktop.locale1",
+ "/org/freedesktop/locale1",
+ "org.freedesktop.locale1",
+ priv->cancellable,
+ (GAsyncReadyCallback) localed_proxy_ready,
+ object);
+ g_object_unref (bus);
+ }
+ }
gis_page_set_complete (GIS_PAGE (page), TRUE);
gtk_widget_show (GTK_WIDGET (page));
@@ -321,6 +374,14 @@ gis_language_page_class_init (GisLanguagePageClass *klass)
page_class->locale_changed = gis_language_page_locale_changed;
object_class->constructed = gis_language_page_constructed;
object_class->dispose = gis_language_page_dispose;
+ object_class->get_property = gis_language_page_get_property;
+ object_class->set_property = gis_language_page_set_property;
+
+ obj_props[PROP_SHOW_LANGUAGE_CHOOSER] =
+ g_param_spec_boolean ("show-language-chooser", "", "", TRUE,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+
+ g_object_class_install_properties (object_class, PROP_LAST, obj_props);
}
static void
@@ -341,3 +402,13 @@ gis_prepare_language_page (GisDriver *driver)
"driver", driver,
NULL));
}
+
+void
+gis_prepare_language_page_without_language_selection (GisDriver *driver)
+{
+ gis_driver_add_page (driver,
+ g_object_new (GIS_TYPE_LANGUAGE_PAGE,
+ "driver", driver,
+ "show-language-chooser", FALSE,
+ NULL));
+}
diff --git a/gnome-initial-setup/pages/language/gis-language-page.h b/gnome-initial-setup/pages/language/gis-language-page.h
index 37b33ab..a3a30f3 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.h
+++ b/gnome-initial-setup/pages/language/gis-language-page.h
@@ -51,6 +51,7 @@ struct _GisLanguagePageClass
GType gis_language_page_get_type (void);
void gis_prepare_language_page (GisDriver *driver);
+void gis_prepare_language_page_without_language_selection (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/language/gis-language-page.ui b/gnome-initial-setup/pages/language/gis-language-page.ui
index 1b98a6d..50605a3 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.ui
+++ b/gnome-initial-setup/pages/language/gis-language-page.ui
@@ -7,13 +7,13 @@
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="halign">center</property>
- <property name="valign">fill</property>
+ <property name="valign">center</property>
<child>
<object class="GtkImage" id="logo">
<property name="visible" bind-source="GisLanguagePage" bind-property="small-screen" bind-flags="invert-boolean|sync-create"/>
<property name="can_focus">False</property>
<property name="margin_top">24</property>
- <property name="pixel_size">96</property>
+ <property name="pixel_size">128</property>
<property name="icon_name">start-here-symbolic</property>
</object>
</child>
@@ -30,7 +30,7 @@
<object class="CcLanguageChooser" id="language_chooser">
<property name="margin_bottom">18</property>
<property name="width_request">400</property>
- <property name="visible">True</property>
+ <property name="visible">False</property>
<property name="valign">start</property>
</object>
</child>
--
2.14.3