import gnome-initial-setup-3.28.0-9.el8

This commit is contained in:
CentOS Sources 2020-10-24 06:08:51 +00:00 committed by Andrew Lukoshko
commit 5b0e54097b
9 changed files with 1681 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/gnome-initial-setup-3.28.0.tar.xz

View File

@ -0,0 +1 @@
79d6f8ce89086aba95c1fd519053af523d4409ea SOURCES/gnome-initial-setup-3.28.0.tar.xz

View File

@ -0,0 +1,30 @@
From 985f2a009ddf5179482e7551400cf8065553707e Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Wed, 11 Apr 2018 22:16:54 -0500
Subject: Revert "Revert "Don't hard-enforce strong passwords""
This reverts commit 0c67a9800c7832dd55c046adc372833a96a96cf0.
This is a requirement for Fedora, but I suspect few distros want to
irritate users right off the bat by dictating which passwords may be
used.
---
gnome-initial-setup/pages/password/gis-password-page.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gnome-initial-setup/pages/password/gis-password-page.c b/gnome-initial-setup/pages/password/gis-password-page.c
index cf3db9e..731666d 100644
--- a/gnome-initial-setup/pages/password/gis-password-page.c
+++ b/gnome-initial-setup/pages/password/gis-password-page.c
@@ -59,7 +59,7 @@ page_validate (GisPasswordPage *page)
{
GisPasswordPagePrivate *priv = gis_password_page_get_instance_private (page);
- return priv->valid_confirm && priv->valid_password;
+ return priv->valid_confirm;
}
static void
--
cgit v0.12

View File

@ -0,0 +1,91 @@
diff -urN gnome-initial-setup-3.28.0.old/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c gnome-initial-setup-3.28.0/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
--- gnome-initial-setup-3.28.0.old/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c 2020-10-23 09:57:27.493000000 +0100
+++ gnome-initial-setup-3.28.0/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c 2020-10-23 15:03:34.772000000 +0100
@@ -37,6 +37,8 @@
#include "keyboard-resources.h"
#include "cc-input-chooser.h"
+#include "cc-common-language.h"
+
#define GNOME_DESKTOP_INPUT_SOURCES_DIR "org.gnome.desktop.input-sources"
#define KEY_CURRENT_INPUT_SOURCE "current"
#define KEY_INPUT_SOURCES "sources"
@@ -281,8 +283,7 @@
{
const gchar *type;
const gchar *id;
- const gchar * const *locales;
- const gchar *language;
+ gchar *language;
GVariantBuilder builder;
GSettings *input_settings;
@@ -292,12 +293,12 @@
add_default_keyboard_layout (proxy, &builder);
/* add other input sources */
- locales = g_get_language_names ();
- language = locales[0];
+ language = cc_common_language_get_current_language ();
if (gnome_get_input_source_from_locale (language, &type, &id)) {
if (!g_str_equal (type, "xkb"))
g_variant_builder_add (&builder, "(ss)", type, id);
}
+ g_free (language);
g_settings_delay (input_settings);
g_settings_set_value (input_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
@@ -346,8 +347,12 @@
}
static void
-load_localed_input (GisKeyboardPage *self)
+preselect_input_source (GisKeyboardPage *self)
{
+ const gchar *type;
+ const gchar *id;
+ gchar *language;
+
GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
GSList * sources = get_localed_input (priv->localed);
@@ -356,11 +361,28 @@
g_slist_free_full (priv->system_sources, g_free);
priv->system_sources = g_slist_reverse (sources);
- /* We only pre-select the first system layout. */
- if (priv->system_sources)
+ /* For languages that use an input method, we will add both
+ * system keyboard layout and the ibus input method. For
+ * languages that use keyboard layout only, we will add only
+ * system keyboard layout. Because the keyboard layout
+ * information from gnome-desktop is not as accurate as system
+ * keyboard layout, if gnome-desktop returns keyboard layout,
+ * we ignore it and use system keyboard layout instead. If
+ * gnome-desktop instead returns an ibus input method, we will
+ * add both system keyboard layout and the ibus input method. */
+ language = cc_common_language_get_current_language ();
+
+ if (!priv->system_sources ||
+ (gnome_get_input_source_from_locale (language, &type, &id) && g_strcmp0 (type, "xkb") != 0)) {
+ cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser),
+ id, type);
+ } else {
cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser),
(const gchar *) priv->system_sources->data,
"xkb");
+ }
+
+ g_free (language);
}
static void
@@ -395,7 +417,7 @@
priv->localed = proxy;
- load_localed_input (self);
+ preselect_input_source (self);
update_page_complete (self);
}

View File

@ -0,0 +1,88 @@
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] 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

View File

@ -0,0 +1,24 @@
diff -up gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c.quacks_like_fedora gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c
--- gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c.quacks_like_fedora 2019-02-18 11:06:22.404874101 -0500
+++ gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c 2019-02-18 13:29:59.069513421 -0500
@@ -227,11 +227,18 @@ update_distro_logo (GisLanguagePage *pag
if (g_file_get_contents ("/etc/os-release", &buffer, NULL, NULL))
{
- id = get_item (buffer, "ID");
+ id = get_item (buffer, "ID_LIKE");
+
+ if (id == NULL)
+ id = get_item (buffer, "ID");
+
g_free (buffer);
}
- if (g_strcmp0 (id, "fedora") == 0)
+ if (id != NULL &&
+ (strcmp (id, "fedora") == 0 ||
+ strstr (id, " fedora") != NULL ||
+ strstr (id, "fedora ") != NULL))
{
g_object_set (priv->logo, "icon-name", "fedora-logo-icon", NULL);
}

View File

@ -0,0 +1,974 @@
From de07cbc69b8f64b1a7708f454f029814d3c48b10 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Thu, 15 Feb 2018 21:08:38 -0600
Subject: [PATCH] Reduce initial setup redundancy
This contains patches from these bugs:
https://bugzilla.gnome.org/show_bug.cgi?id=793501
https://bugzilla.gnome.org/show_bug.cgi?id=794166
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-page.c | 8 +
gnome-initial-setup/gis-page.h | 2 +
gnome-initial-setup/gnome-initial-setup.c | 77 +++++++--
.../pages/account/gis-account-page.h | 2 -
.../pages/account/gis-account-pages.c | 9 +-
.../pages/account/gis-account-pages.h | 2 +-
gnome-initial-setup/pages/eulas/gis-eula-pages.c | 16 +-
gnome-initial-setup/pages/eulas/gis-eula-pages.h | 2 +-
gnome-initial-setup/pages/goa/gis-goa-page.c | 9 +-
gnome-initial-setup/pages/goa/gis-goa-page.h | 2 +-
.../pages/keyboard/gis-keyboard-page.c | 185 ++++++++++++++++-----
.../pages/keyboard/gis-keyboard-page.h | 2 +-
.../pages/language/gis-language-page.c | 24 ++-
.../pages/language/gis-language-page.h | 3 +-
.../pages/language/gis-language-page.ui | 4 +-
.../pages/network/gis-network-page.c | 9 +-
.../pages/network/gis-network-page.h | 2 +-
.../pages/password/gis-password-page.c | 9 +-
.../pages/password/gis-password-page.h | 2 +-
.../pages/privacy/gis-privacy-page.c | 9 +-
.../pages/privacy/gis-privacy-page.h | 2 +-
gnome-initial-setup/pages/region/gis-region-page.c | 9 +-
gnome-initial-setup/pages/region/gis-region-page.h | 2 +-
.../pages/software/gis-software-page.c | 14 +-
.../pages/software/gis-software-page.h | 2 +-
.../pages/summary/gis-summary-page.c | 9 +-
.../pages/summary/gis-summary-page.h | 2 +-
.../pages/timezone/gis-timezone-page.c | 9 +-
.../pages/timezone/gis-timezone-page.h | 2 +-
30 files changed, 296 insertions(+), 136 deletions(-)
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index 37ed563..0a3bd05 100644
--- a/gnome-initial-setup/gis-assistant.c
+++ b/gnome-initial-setup/gis-assistant.c
@@ -302,7 +302,8 @@ gis_assistant_add_page (GisAssistant *assistant,
gtk_container_add (GTK_CONTAINER (priv->stack), GTK_WIDGET (page));
- if (priv->current_page->assistant_priv->link == link->prev)
+ if (priv->current_page &&
+ priv->current_page->assistant_priv->link == link->prev)
update_navigation_buttons (assistant);
}
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index e28f573..8564935 100644
--- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c
@@ -382,3 +382,11 @@ gis_page_shown (GisPage *page)
if (GIS_PAGE_GET_CLASS (page)->shown)
GIS_PAGE_GET_CLASS (page)->shown (page);
}
+
+gboolean
+gis_page_skip (GisPage *page)
+{
+ if (GIS_PAGE_GET_CLASS (page)->skip)
+ return GIS_PAGE_GET_CLASS (page)->skip (page);
+ return TRUE;
+}
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index 02e3085..1f11578 100644
--- a/gnome-initial-setup/gis-page.h
+++ b/gnome-initial-setup/gis-page.h
@@ -60,6 +60,7 @@ struct _GisPageClass
GCancellable *cancellable);
void (*save_data) (GisPage *page);
void (*shown) (GisPage *page);
+ gboolean (*skip) (GisPage *page);
};
GType gis_page_get_type (void);
@@ -80,6 +81,7 @@ void gis_page_apply_complete (GisPage *page, gboolean valid);
gboolean gis_page_get_applying (GisPage *page);
void gis_page_save_data (GisPage *page);
void gis_page_shown (GisPage *page);
+gboolean gis_page_skip (GisPage *page);
G_END_DECLS
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 5a988a3..4558810 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -50,11 +50,15 @@
#include "pages/summary/gis-summary-page.h"
#define VENDOR_PAGES_GROUP "pages"
-#define VENDOR_PAGES_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;
-typedef void (*PreparePage) (GisDriver *driver);
+static GPtrArray *skipped_pages;
+
+typedef GisPage *(*PreparePage) (GisDriver *driver);
typedef struct {
const gchar *page_id;
@@ -101,21 +105,40 @@ should_skip_page (GisDriver *driver,
}
static gchar **
-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)
{
GKeyFile *skip_pages_file;
gchar **skip_pages = NULL;
+ gchar **additional_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:
- * - skip (optional): list of pages to be skipped.
+ * - skip (optional): list of pages to be skipped always
+ * - 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 might look on a vendor image:
*
* [pages]
- * skip=language
+ * skip=timezone
+ * existing_user_only=language;keyboard
*/
skip_pages_file = g_key_file_new ();
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;
}
- 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,
+ VENDOR_PAGES_GROUP,
+ 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:
g_key_file_free (skip_pages_file);
@@ -159,16 +194,14 @@ static void
rebuild_pages_cb (GisDriver *driver)
{
PageData *page_data;
+ GisPage *page;
GisAssistant *assistant;
GisPage *current_page;
gchar **skip_pages;
- gboolean is_new_user;
+ gboolean is_new_user, skipped;
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,14 +215,23 @@ 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;
+ skipped = FALSE;
+
+ if ((page_data->new_user_only && !is_new_user) ||
+ (should_skip_page (driver, page_data->page_id, skip_pages)))
+ skipped = TRUE;
- if (should_skip_page (driver, page_data->page_id, skip_pages))
+ page = page_data->prepare_page_func (driver);
+ if (!page)
continue;
- page_data->prepare_page_func (driver);
+ if (skipped && gis_page_skip (page))
+ g_ptr_array_add (skipped_pages, page);
+ else
+ gis_driver_add_page (driver, page);
}
g_strfreev (skip_pages);
@@ -267,6 +309,7 @@ main (int argc, char *argv[])
}
#endif
+ 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
@@ -290,6 +333,8 @@ main (int argc, char *argv[])
g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL);
status = g_application_run (G_APPLICATION (driver), argc, argv);
+ g_ptr_array_free (skipped_pages, TRUE);
+
g_object_unref (driver);
g_option_context_free (context);
return status;
diff --git a/gnome-initial-setup/pages/account/gis-account-page.h b/gnome-initial-setup/pages/account/gis-account-page.h
index cc34304..7629e1a 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.h
+++ b/gnome-initial-setup/pages/account/gis-account-page.h
@@ -50,8 +50,6 @@ struct _GisAccountPageClass
GType gis_account_page_get_type (void);
-void gis_prepare_account_page (GisDriver *driver);
-
G_END_DECLS
#endif /* __GIS_ACCOUNT_PAGE_H__ */
diff --git a/gnome-initial-setup/pages/account/gis-account-pages.c b/gnome-initial-setup/pages/account/gis-account-pages.c
index 5f4411b..d9cc8d9 100644
--- a/gnome-initial-setup/pages/account/gis-account-pages.c
+++ b/gnome-initial-setup/pages/account/gis-account-pages.c
@@ -23,11 +23,10 @@
#include "gis-account-pages.h"
#include "gis-account-page.h"
-void
+GisPage *
gis_prepare_account_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_ACCOUNT_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_ACCOUNT_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/account/gis-account-pages.h b/gnome-initial-setup/pages/account/gis-account-pages.h
index 20d615a..394421b 100644
--- a/gnome-initial-setup/pages/account/gis-account-pages.h
+++ b/gnome-initial-setup/pages/account/gis-account-pages.h
@@ -28,7 +28,7 @@
G_BEGIN_DECLS
-void gis_prepare_account_page (GisDriver *driver);
+GisPage *gis_prepare_account_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.c b/gnome-initial-setup/pages/eulas/gis-eula-pages.c
index 8c989c2..3de6653 100644
--- a/gnome-initial-setup/pages/eulas/gis-eula-pages.c
+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.c
@@ -25,7 +25,7 @@
#include "gis-eula-pages.h"
#include "gis-eula-page.h"
-void
+GisPage *
gis_prepare_eula_page (GisDriver *driver)
{
gchar *eulas_dir_path;
@@ -33,6 +33,7 @@ gis_prepare_eula_page (GisDriver *driver)
GError *error = NULL;
GFileEnumerator *enumerator = NULL;
GFileInfo *info;
+ GisPage *page = NULL;
eulas_dir_path = g_build_filename (PKGDATADIR, "eulas", NULL);
eulas_dir = g_file_new_for_path (eulas_dir_path);
@@ -52,11 +53,12 @@ gis_prepare_eula_page (GisDriver *driver)
while ((info = g_file_enumerator_next_file (enumerator, NULL, &error)) != NULL) {
GFile *eula = g_file_enumerator_get_child (enumerator, info);
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_EULA_PAGE,
- "driver", driver,
- "eula", eula,
- NULL));
+
+ page = g_object_new (GIS_TYPE_EULA_PAGE,
+ "driver", driver,
+ "eula", eula,
+ NULL);
+
g_object_unref (eula);
}
@@ -71,4 +73,6 @@ gis_prepare_eula_page (GisDriver *driver)
g_object_unref (eulas_dir);
g_clear_object (&enumerator);
+
+ return page;
}
diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.h b/gnome-initial-setup/pages/eulas/gis-eula-pages.h
index 9424a6d..54906bc 100644
--- a/gnome-initial-setup/pages/eulas/gis-eula-pages.h
+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.h
@@ -28,7 +28,7 @@
G_BEGIN_DECLS
-void gis_prepare_eula_page (GisDriver *driver);
+GisPage *gis_prepare_eula_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/goa/gis-goa-page.c b/gnome-initial-setup/pages/goa/gis-goa-page.c
index fcdcabe..3ed4e98 100644
--- a/gnome-initial-setup/pages/goa/gis-goa-page.c
+++ b/gnome-initial-setup/pages/goa/gis-goa-page.c
@@ -363,11 +363,10 @@ gis_goa_page_init (GisGoaPage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_goa_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_GOA_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_GOA_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/goa/gis-goa-page.h b/gnome-initial-setup/pages/goa/gis-goa-page.h
index e65aa28..31918bf 100644
--- a/gnome-initial-setup/pages/goa/gis-goa-page.h
+++ b/gnome-initial-setup/pages/goa/gis-goa-page.h
@@ -48,7 +48,7 @@ struct _GisGoaPageClass
GType gis_goa_page_get_type (void);
-void gis_prepare_goa_page (GisDriver *driver);
+GisPage *gis_prepare_goa_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
index 91d9a25..445da30 100644
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
@@ -30,6 +30,9 @@
#include <gtk/gtk.h>
#include <polkit/polkit.h>
+#define GNOME_DESKTOP_USE_UNSTABLE_API
+#include <libgnome-desktop/gnome-languages.h>
+
#include "gis-keyboard-page.h"
#include "keyboard-resources.h"
#include "cc-input-chooser.h"
@@ -208,53 +211,145 @@ gis_keyboard_page_apply (GisPage *page,
return FALSE;
}
+static GSList *
+get_localed_input (GDBusProxy *proxy)
+{
+ GVariant *v;
+ const gchar *s;
+ gchar *id;
+ guint i, n;
+ gchar **layouts = NULL;
+ gchar **variants = NULL;
+ GSList *sources = NULL;
+
+ if (!proxy)
+ return NULL;
+
+ v = g_dbus_proxy_get_cached_property (proxy, "X11Layout");
+ if (v) {
+ s = g_variant_get_string (v, NULL);
+ layouts = g_strsplit (s, ",", -1);
+ g_variant_unref (v);
+ }
+
+ v = g_dbus_proxy_get_cached_property (proxy, "X11Variant");
+ if (v) {
+ s = g_variant_get_string (v, NULL);
+ if (s && *s)
+ variants = g_strsplit (s, ",", -1);
+ g_variant_unref (v);
+ }
+
+ if (variants && variants[0])
+ n = MIN (g_strv_length (layouts), g_strv_length (variants));
+ else if (layouts && layouts[0])
+ n = g_strv_length (layouts);
+ else
+ n = 0;
+
+ for (i = 0; i < n && layouts[i][0]; i++) {
+ if (variants && variants[i] && variants[i][0])
+ id = g_strdup_printf ("%s+%s", layouts[i], variants[i]);
+ else
+ id = g_strdup (layouts[i]);
+ sources = g_slist_prepend (sources, id);
+ }
+
+ g_strfreev (variants);
+ g_strfreev (layouts);
+
+ return sources;
+}
+
static void
-load_localed_input (GisKeyboardPage *self)
+add_default_keyboard_layout (GDBusProxy *proxy,
+ GVariantBuilder *builder)
{
- GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
- GVariant *v;
- const gchar *s;
- gchar *id;
- guint i, n;
- gchar **layouts = NULL;
- gchar **variants = NULL;
- GSList *sources = NULL;
+ GSList *sources = get_localed_input (proxy);
+ sources = g_slist_reverse (sources);
- if (!priv->localed)
- return;
+ for (; sources; sources = sources->next)
+ g_variant_builder_add (builder, "(ss)", "xkb",
+ (const gchar *) sources->data);
- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Layout");
- if (v) {
- s = g_variant_get_string (v, NULL);
- layouts = g_strsplit (s, ",", -1);
- g_variant_unref (v);
- }
+ g_slist_free_full (sources, g_free);
+}
- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Variant");
- if (v) {
- s = g_variant_get_string (v, NULL);
- if (s && *s)
- variants = g_strsplit (s, ",", -1);
- g_variant_unref (v);
- }
+static void
+add_default_input_sources (GisKeyboardPage *self,
+ GDBusProxy *proxy)
+{
+ const gchar *type;
+ const gchar *id;
+ const gchar * const *locales;
+ const gchar *language;
+ GVariantBuilder builder;
+ GSettings *input_settings;
+
+ input_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR);
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
+
+ add_default_keyboard_layout (proxy, &builder);
+
+ /* add other input sources */
+ locales = g_get_language_names ();
+ language = locales[0];
+ if (gnome_get_input_source_from_locale (language, &type, &id)) {
+ if (!g_str_equal (type, "xkb"))
+ g_variant_builder_add (&builder, "(ss)", type, id);
+ }
+
+ g_settings_delay (input_settings);
+ g_settings_set_value (input_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
+ g_settings_set_uint (input_settings, KEY_CURRENT_INPUT_SOURCE, 0);
+ g_settings_apply (input_settings);
+
+ g_object_unref (input_settings);
+}
- if (variants && variants[0])
- n = MIN (g_strv_length (layouts), g_strv_length (variants));
- else if (layouts && layouts[0])
- n = g_strv_length (layouts);
- else
- n = 0;
-
- for (i = 0; i < n && layouts[i][0]; i++) {
- if (variants && variants[i] && variants[i][0])
- id = g_strdup_printf ("%s+%s", layouts[i], variants[i]);
- else
- id = g_strdup (layouts[i]);
- sources = g_slist_prepend (sources, id);
- }
+static void
+skip_proxy_ready (GObject *source,
+ GAsyncResult *res,
+ gpointer data)
+{
+ GisKeyboardPage *self = data;
+ GDBusProxy *proxy;
+ GError *error = NULL;
+
+ proxy = g_dbus_proxy_new_finish (res, &error);
+
+ if (!proxy) {
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ g_warning ("Failed to contact localed: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ add_default_input_sources (self, proxy);
+
+ g_object_unref (proxy);
+}
- g_strfreev (variants);
- g_strfreev (layouts);
+static gboolean
+gis_keyboard_page_skip (GisPage *self)
+{
+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
+ NULL,
+ "org.freedesktop.locale1",
+ "/org/freedesktop/locale1",
+ "org.freedesktop.locale1",
+ NULL,
+ (GAsyncReadyCallback) skip_proxy_ready,
+ self);
+ return TRUE;
+}
+
+static void
+load_localed_input (GisKeyboardPage *self)
+{
+ GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
+ GSList * sources = get_localed_input (priv->localed);
/* These will be added silently after the user selection when
* writing out the settings. */
@@ -375,6 +470,7 @@ gis_keyboard_page_class_init (GisKeyboardPageClass * klass)
page_class->page_id = PAGE_ID;
page_class->apply = gis_keyboard_page_apply;
+ page_class->skip = gis_keyboard_page_skip;
page_class->locale_changed = gis_keyboard_page_locale_changed;
object_class->constructed = gis_keyboard_page_constructed;
object_class->finalize = gis_keyboard_page_finalize;
@@ -389,11 +485,10 @@ gis_keyboard_page_init (GisKeyboardPage *self)
gtk_widget_init_template (GTK_WIDGET (self));
}
-void
+GisPage *
gis_prepare_keyboard_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_KEYBOARD_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_KEYBOARD_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h
index 832473f..d5710a0 100644
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h
@@ -63,7 +63,7 @@ struct _GisKeyboardPageClass
GType gis_keyboard_page_get_type (void) G_GNUC_CONST;
-void gis_prepare_keyboard_page (GisDriver *driver);
+GisPage *gis_prepare_keyboard_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/language/gis-language-page.c b/gnome-initial-setup/pages/language/gis-language-page.c
index 6e246f9..c5f895c 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.c
+++ b/gnome-initial-setup/pages/language/gis-language-page.c
@@ -267,6 +267,8 @@ gis_language_page_constructed (GObject *object)
update_distro_logo (page);
+ 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",
@@ -288,7 +290,7 @@ gis_language_page_constructed (GObject *object)
(GAsyncReadyCallback) localed_proxy_ready,
object);
g_object_unref (bus);
- }
+ }
gis_page_set_complete (GIS_PAGE (page), TRUE);
gtk_widget_show (GTK_WIDGET (page));
@@ -300,6 +302,16 @@ gis_language_page_locale_changed (GisPage *page)
gis_page_set_title (GIS_PAGE (page), _("Welcome"));
}
+static gboolean
+gis_language_page_skip (GisPage *page)
+{
+ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (GIS_LANGUAGE_PAGE (page));
+
+ gtk_widget_hide (priv->language_chooser);
+
+ return FALSE;
+}
+
static void
gis_language_page_dispose (GObject *object)
{
@@ -327,6 +339,7 @@ gis_language_page_class_init (GisLanguagePageClass *klass)
page_class->page_id = PAGE_ID;
page_class->locale_changed = gis_language_page_locale_changed;
+ page_class->skip = gis_language_page_skip;
object_class->constructed = gis_language_page_constructed;
object_class->dispose = gis_language_page_dispose;
}
@@ -341,11 +354,10 @@ gis_language_page_init (GisLanguagePage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_language_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_LANGUAGE_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_LANGUAGE_PAGE,
+ "driver", driver,
+ 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..a5b78ff 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.h
+++ b/gnome-initial-setup/pages/language/gis-language-page.h
@@ -50,7 +50,8 @@ struct _GisLanguagePageClass
GType gis_language_page_get_type (void);
-void gis_prepare_language_page (GisDriver *driver);
+GisPage *gis_prepare_language_page (GisDriver *driver);
+GisPage *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..d5e962a 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.ui
+++ b/gnome-initial-setup/pages/language/gis-language-page.ui
@@ -7,7 +7,7 @@
<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"/>
@@ -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>
diff --git a/gnome-initial-setup/pages/network/gis-network-page.c b/gnome-initial-setup/pages/network/gis-network-page.c
index 0beae26..29fc523 100644
--- a/gnome-initial-setup/pages/network/gis-network-page.c
+++ b/gnome-initial-setup/pages/network/gis-network-page.c
@@ -691,11 +691,10 @@ gis_network_page_init (GisNetworkPage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_network_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_NETWORK_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_NETWORK_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/network/gis-network-page.h b/gnome-initial-setup/pages/network/gis-network-page.h
index cdb1798..172b7d1 100644
--- a/gnome-initial-setup/pages/network/gis-network-page.h
+++ b/gnome-initial-setup/pages/network/gis-network-page.h
@@ -48,7 +48,7 @@ struct _GisNetworkPageClass
GType gis_network_page_get_type (void);
-void gis_prepare_network_page (GisDriver *driver);
+GisPage *gis_prepare_network_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/password/gis-password-page.c b/gnome-initial-setup/pages/password/gis-password-page.c
index cefa30e..cf3db9e 100644
--- a/gnome-initial-setup/pages/password/gis-password-page.c
+++ b/gnome-initial-setup/pages/password/gis-password-page.c
@@ -304,12 +304,11 @@ gis_password_page_init (GisPasswordPage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_password_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_PASSWORD_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_PASSWORD_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/password/gis-password-page.h b/gnome-initial-setup/pages/password/gis-password-page.h
index 59d22c7..954782f 100644
--- a/gnome-initial-setup/pages/password/gis-password-page.h
+++ b/gnome-initial-setup/pages/password/gis-password-page.h
@@ -50,7 +50,7 @@ struct _GisPasswordPageClass
GType gis_password_page_get_type (void);
-void gis_prepare_password_page (GisDriver *driver);
+GisPage *gis_prepare_password_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.c b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
index f2af372..7d83d62 100644
--- a/gnome-initial-setup/pages/privacy/gis-privacy-page.c
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
@@ -321,11 +321,10 @@ gis_privacy_page_init (GisPrivacyPage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_privacy_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_PRIVACY_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_PRIVACY_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.h b/gnome-initial-setup/pages/privacy/gis-privacy-page.h
index d814612..9596b36 100644
--- a/gnome-initial-setup/pages/privacy/gis-privacy-page.h
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.h
@@ -50,7 +50,7 @@ struct _GisPrivacyPageClass
GType gis_privacy_page_get_type (void);
-void gis_prepare_privacy_page (GisDriver *driver);
+GisPage *gis_prepare_privacy_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/region/gis-region-page.c b/gnome-initial-setup/pages/region/gis-region-page.c
index 6e90d57..5a31b9c 100644
--- a/gnome-initial-setup/pages/region/gis-region-page.c
+++ b/gnome-initial-setup/pages/region/gis-region-page.c
@@ -276,11 +276,10 @@ gis_region_page_init (GisRegionPage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_region_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_REGION_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_REGION_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/region/gis-region-page.h b/gnome-initial-setup/pages/region/gis-region-page.h
index eca0204..b99c2fe 100644
--- a/gnome-initial-setup/pages/region/gis-region-page.h
+++ b/gnome-initial-setup/pages/region/gis-region-page.h
@@ -50,7 +50,7 @@ struct _GisRegionPageClass
GType gis_region_page_get_type (void);
-void gis_prepare_region_page (GisDriver *driver);
+GisPage *gis_prepare_region_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/software/gis-software-page.c b/gnome-initial-setup/pages/software/gis-software-page.c
index 7c15a2c..f3e827a 100644
--- a/gnome-initial-setup/pages/software/gis-software-page.c
+++ b/gnome-initial-setup/pages/software/gis-software-page.c
@@ -244,22 +244,24 @@ gis_software_page_init (GisSoftwarePage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_software_page (GisDriver *driver)
{
-#ifdef ENABLE_SOFTWARE_SOURCES
GSettingsSchemaSource *source;
GSettingsSchema *schema;
+ GisPage *page = NULL;
+#ifdef ENABLE_SOFTWARE_SOURCES
source = g_settings_schema_source_get_default ();
schema = g_settings_schema_source_lookup (source, "org.gnome.software", TRUE);
if (schema != NULL && g_settings_schema_has_key (schema, "show-nonfree-software"))
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_SOFTWARE_PAGE,
- "driver", driver,
- NULL));
+ page = g_object_new (GIS_TYPE_SOFTWARE_PAGE,
+ "driver", driver,
+ NULL);
if (schema != NULL)
g_settings_schema_unref (schema);
#endif
+
+ return page;
}
diff --git a/gnome-initial-setup/pages/software/gis-software-page.h b/gnome-initial-setup/pages/software/gis-software-page.h
index 6bceda1..8d15245 100644
--- a/gnome-initial-setup/pages/software/gis-software-page.h
+++ b/gnome-initial-setup/pages/software/gis-software-page.h
@@ -50,7 +50,7 @@ struct _GisSoftwarePageClass
GType gis_software_page_get_type (void);
-void gis_prepare_software_page (GisDriver *driver);
+GisPage *gis_prepare_software_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.c b/gnome-initial-setup/pages/summary/gis-summary-page.c
index 4261b92..f510f2f 100644
--- a/gnome-initial-setup/pages/summary/gis-summary-page.c
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.c
@@ -361,11 +361,10 @@ gis_summary_page_init (GisSummaryPage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_summary_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_SUMMARY_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_SUMMARY_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.h b/gnome-initial-setup/pages/summary/gis-summary-page.h
index 0fe2274..20190f1 100644
--- a/gnome-initial-setup/pages/summary/gis-summary-page.h
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.h
@@ -48,7 +48,7 @@ struct _GisSummaryPageClass
GType gis_summary_page_get_type (void);
-void gis_prepare_summary_page (GisDriver *driver);
+GisPage *gis_prepare_summary_page (GisDriver *driver);
G_END_DECLS
diff --git a/gnome-initial-setup/pages/timezone/gis-timezone-page.c b/gnome-initial-setup/pages/timezone/gis-timezone-page.c
index a090db2..0775d98 100644
--- a/gnome-initial-setup/pages/timezone/gis-timezone-page.c
+++ b/gnome-initial-setup/pages/timezone/gis-timezone-page.c
@@ -462,11 +462,10 @@ gis_timezone_page_init (GisTimezonePage *page)
gtk_widget_init_template (GTK_WIDGET (page));
}
-void
+GisPage *
gis_prepare_timezone_page (GisDriver *driver)
{
- gis_driver_add_page (driver,
- g_object_new (GIS_TYPE_TIMEZONE_PAGE,
- "driver", driver,
- NULL));
+ return g_object_new (GIS_TYPE_TIMEZONE_PAGE,
+ "driver", driver,
+ NULL);
}
diff --git a/gnome-initial-setup/pages/timezone/gis-timezone-page.h b/gnome-initial-setup/pages/timezone/gis-timezone-page.h
index 5e75256..e9ba8ed 100644
--- a/gnome-initial-setup/pages/timezone/gis-timezone-page.h
+++ b/gnome-initial-setup/pages/timezone/gis-timezone-page.h
@@ -50,7 +50,7 @@ struct _GisTimezonePageClass
GType gis_timezone_page_get_type (void);
-void gis_prepare_timezone_page (GisDriver *driver);
+GisPage *gis_prepare_timezone_page (GisDriver *driver);
G_END_DECLS
--
2.14.3

3
SOURCES/vendor.conf Normal file
View File

@ -0,0 +1,3 @@
[pages]
skip=timezone
existing_user_only=language;keyboard

View File

@ -0,0 +1,469 @@
%global nm_version 1.2
%global nma_version 1.0
%global glib_required_version 2.53.0
%global gtk_required_version 3.11.3
%global geoclue_version 2.3.1
Name: gnome-initial-setup
Version: 3.28.0
Release: 9%{?dist}
Summary: Bootstrapping your OS
License: GPLv2+
URL: https://wiki.gnome.org/Design/OS/InitialSetup
Source0: https://download.gnome.org/sources/%{name}/3.28/%{name}-%{version}.tar.xz
Source1: vendor.conf
Patch0: honor-firstboot-disabled.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=793501 and https://bugzilla.gnome.org/show_bug.cgi?id=794166
Patch1: reduce-initial-setup-redundancy.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=754213
Patch2: allow-weak-passwords.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1655150
Patch3: quacks-like-fedora.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1703333
Patch4: gnome-initial-setup-3.28.0-fix-japanese-defaults.patch
BuildRequires: krb5-devel
BuildRequires: desktop-file-utils
BuildRequires: intltool
BuildRequires: libpwquality-devel
BuildRequires: pkgconfig(libnm) >= %{nm_version}
BuildRequires: pkgconfig(libnma) >= %{nma_version}
BuildRequires: pkgconfig(accountsservice)
BuildRequires: pkgconfig(gnome-desktop-3.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(cheese)
BuildRequires: pkgconfig(cheese-gtk) >= 3.3.5
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(geocode-glib-1.0)
BuildRequires: pkgconfig(gweather-3.0)
BuildRequires: pkgconfig(goa-1.0)
BuildRequires: pkgconfig(goa-backend-1.0)
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk_required_version}
BuildRequires: pkgconfig(glib-2.0) >= %{glib_required_version}
BuildRequires: pkgconfig(gio-2.0) >= %{glib_required_version}
BuildRequires: pkgconfig(gio-unix-2.0) >= %{glib_required_version}
BuildRequires: pkgconfig(gdm)
BuildRequires: pkgconfig(iso-codes)
BuildRequires: pkgconfig(libgeoclue-2.0) >= %{geoclue_version}
BuildRequires: pkgconfig(packagekit-glib2)
BuildRequires: pkgconfig(webkit2gtk-4.0)
BuildRequires: krb5-devel
BuildRequires: ibus-devel
BuildRequires: rest-devel
BuildRequires: polkit-devel
BuildRequires: libsecret-devel
# Needed to run autoreconf, for patches that touch autotools bits
BuildRequires: autoconf
BuildRequires: gnome-common
# gnome-initial-setup is being run by gdm
Requires: gdm
Requires: geoclue2-libs%{?_isa} >= %{geoclue_version}
Requires: glib2%{?_isa} >= %{glib_required_version}
# we install a rules file
Requires: polkit-js-engine
Requires: /usr/bin/gkbd-keyboard-display
Requires(pre): shadow-utils
Provides: user(%name)
%description
GNOME Initial Setup is an alternative to firstboot, providing
a good setup experience to welcome you to your system, and walks
you through configuring it. It is integrated with gdm.
%prep
%autosetup -p1
%build
# patches touch am files
autoreconf -i
%configure \
--enable-software-sources \
--with-vendor-conf-file=%{_datadir}/gnome-initial-setup/vendor.conf
make %{?_smp_mflags}
%install
%make_install
find %{buildroot} -name '*.la' -exec rm -f {} ';'
# Desktop file does not (and probably will not) ever validate, as it uses
# an absolute path /tmp/-style trigger to determine whether to autostart.
# desktop-file-validate %%{buildroot}/%%{_sysconfdir}/xdg/autostart/gnome-welcome-tour.desktop
desktop-file-validate %{buildroot}%{_sysconfdir}/xdg/autostart/gnome-initial-setup-copy-worker.desktop
desktop-file-validate %{buildroot}%{_datadir}/gdm/greeter/applications/gnome-initial-setup.desktop
desktop-file-validate %{buildroot}%{_datadir}/gdm/greeter/applications/setup-shell.desktop
mkdir -p %{buildroot}%{_datadir}/gnome-initial-setup
cp %{SOURCE1} %{buildroot}%{_datadir}/gnome-initial-setup/
%find_lang %{name}
%pre
useradd -rM -d /run/gnome-initial-setup/ -s /sbin/nologin %{name} &>/dev/null || :
%files -f %{name}.lang
%license COPYING
%doc README
%{_libexecdir}/gnome-initial-setup
%{_libexecdir}/gnome-initial-setup-copy-worker
%{_libexecdir}/gnome-welcome-tour
%{_sysconfdir}/xdg/autostart/gnome-welcome-tour.desktop
%{_sysconfdir}/xdg/autostart/gnome-initial-setup-copy-worker.desktop
%{_sysconfdir}/xdg/autostart/gnome-initial-setup-first-login.desktop
%{_datadir}/gdm/greeter/applications/gnome-initial-setup.desktop
%{_datadir}/gdm/greeter/applications/setup-shell.desktop
%{_datadir}/gnome-session/sessions/gnome-initial-setup.session
%{_datadir}/gnome-shell/modes/initial-setup.json
%{_datadir}/polkit-1/rules.d/20-gnome-initial-setup.rules
%dir %{_datadir}/gnome-initial-setup
%{_datadir}/gnome-initial-setup/vendor.conf
%changelog
* Mon Oct 19 2020 David King <dking@redhat.com> - 3.28.0-9
- Fix Japanese language default (#1703333)
* Mon Feb 18 2019 Ray Strode <rstrode@redhat.com> - 3.28.0-8
- Ensure vendora logo gets used instead of foot
Resolves: #1655150
* Mon Apr 30 2018 Adam Williamson <awilliam@redhat.com> - 3.28.0-7
- Drop unnecessary pkgconfig(NetworkManager) BuildRequire
- Run autoreconf to avoid automake version mismatch
* Wed Apr 11 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-6
- Allow setting weak passwords
* Mon Apr 02 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-5
- Move vendor.conf to /usr/share
* Sat Mar 31 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-4
- Forgot to update vendor.conf in the previous build
* Sat Mar 31 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-3
- Update reduce initial setup redundancy patch again
* Sat Mar 31 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-2
- Update reduce initial setup redundancy patches
* Tue Mar 13 2018 Kalev Lember <klember@redhat.com> - 3.28.0-1
- Update to 3.28.0
* Fri Feb 16 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.27.90-2
- Install vendor.conf to conditionally suppress certain pages
* 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
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.26.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Mon Feb 05 2018 Kalev Lember <klember@redhat.com> - 3.26.0-3
- Rebuilt for libgweather soname bump
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 3.26.0-2
- Rebuilt for switch to libxcrypt
* Thu Sep 14 2017 Kalev Lember <klember@redhat.com> - 3.26.0-1
- Update to 3.26.0
* Thu Sep 07 2017 Kalev Lember <klember@redhat.com> - 3.25.92-1
- Update to 3.25.92
* Mon Jul 31 2017 Kalev Lember <klember@redhat.com> - 3.25.4-1
- Update to 3.25.4
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.25.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sun Jun 25 2017 Kalev Lember <klember@redhat.com> - 3.25.3-1
- Update to 3.25.3
* Wed May 10 2017 Kalev Lember <klember@redhat.com> - 3.24.2-1
- Update to 3.24.2
* Tue Mar 21 2017 Rui Matos <rmatos@redhat.com> - 3.24.0-1
- Update to 3.24.0
* Tue Mar 14 2017 Florian Müllner <fmuellner@redhat.com> - 3.23.92-1
- Update to 3.23.92
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.23.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* 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
* Wed Oct 12 2016 Kalev Lember <klember@redhat.com> - 3.22.1-1
- Update to 3.22.1
* Mon Sep 19 2016 Kalev Lember <klember@redhat.com> - 3.22.0-1
- Update to 3.22.0
* Tue Sep 13 2016 Kalev Lember <klember@redhat.com> - 3.21.92-1
- Update to 3.21.92
* Mon Sep 05 2016 Kalev Lember <klember@redhat.com> - 3.21.91-2
- Build the software sources page
* Sat Sep 03 2016 Kalev Lember <klember@redhat.com> - 3.21.91-1
- Update to 3.21.91
- Update project URL
* Wed Apr 13 2016 Kalev Lember <klember@redhat.com> - 3.20.1-1
- Update to 3.20.1
* Tue Mar 22 2016 Kalev Lember <klember@redhat.com> - 3.20.0-1
- Update to 3.20.0
* Tue Mar 15 2016 Kalev Lember <klember@redhat.com> - 3.19.92-1
- Update to 3.19.92
* Tue Mar 01 2016 Richard Hughes <rhughes@redhat.com> - 3.19.91-1
- Update to 3.19.91
* Tue Feb 16 2016 Richard Hughes <rhughes@redhat.com> - 3.19.2-1
- Update to 3.19.2
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.19.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Oct 28 2015 Kalev Lember <klember@redhat.com> - 3.19.1-1
- Update to 3.19.1
* Mon Sep 21 2015 Kalev Lember <klember@redhat.com> - 3.18.0-1
- Update to 3.18.0
* Mon Aug 31 2015 Kalev Lember <klember@redhat.com> - 3.17.91-1
- Update to 3.17.91
* Mon Aug 17 2015 Kalev Lember <klember@redhat.com> - 3.17.90-1
- Update to 3.17.90
- Use make_install macro
* Mon Aug 17 2015 Kalev Lember <klember@redhat.com> - 3.17.4-2
- Rebuilt for libcheese soname bump
* Mon Jul 27 2015 David King <amigadave@amigadave.com> - 3.17.4-1
- Update to 3.17.4
* Wed Jul 22 2015 David King <amigadave@amigadave.com> - 3.16.3-3
- Bump for new gnome-desktop3
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.16.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon May 18 2015 Matthias Clasen <mclasen@redhat.com> - 3.16.3-1
- Update to 3.16.3
* Tue May 12 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.2-1
- Update to 3.16.2
* Wed Apr 15 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.1-1
- Update to 3.16.1
* Mon Mar 23 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.0-1
- Update to 3.16.0
* Wed Mar 18 2015 Kalev Lember <kalevlember@gmail.com> - 3.15.92-1
- Update to 3.15.92
* Thu Mar 05 2015 Kalev Lember <kalevlember@gmail.com> - 3.15.91.1-1
- Update to 3.15.91.1
* Mon Mar 02 2015 Kalev Lember <kalevlember@gmail.com> - 3.15.91-1
- Update to 3.15.91
- Use the %%license macro for the COPYING file
* Thu Feb 19 2015 Matthias Clasen <mclasen@redhat.com> - 3.15.90.1-1
- Update to 3.15.90.1
* Tue Dec 16 2014 Rui Matos <rmatos@redhat.com> - 3.14.2.1-2
- Resolves: rhbz#1172363
* Tue Nov 11 2014 Rui Matos <rmatos@redhat.com> - 3.14.2.1-1
- Update to 3.14.2.1
* Mon Nov 10 2014 Rui Matos <rmatos@redhat.com> - 3.14.2-1
- Update to 3.14.2
- Resolves: rhbz#1158442
* Fri Oct 31 2014 Rui Matos <rmatos@redhat.com> - 3.14.1-3
- Resolves: rhbz#1151519
* Tue Oct 21 2014 Rui Matos <rmatos@redhat.com> - 3.14.1-2
- Resolves: rhbz#1154206
* Sat Oct 11 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.1-1
- Update to 3.14.1
* Tue Sep 23 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.0-1
- Update to 3.14.0
* Wed Sep 17 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.7-1
- Update to 3.13.7
* Tue Sep 16 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.6-1
- Update to 3.13.6
* Mon Sep 08 2014 Adam Williamson <awilliam@redhat.com> - 3.13.5-2
- backport upstream patch to offer full list of keyboard layouts (BGO #729208)
* Wed Sep 03 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.5-1
- Update to 3.13.5
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.13.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Wed Aug 13 2014 Matthias Clasen <mclasen@redhat.com> - 3.13.4-2
- Drop the yelp focus patch (we've dropped the yelp patch it depends on)
* Fri Jul 25 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.4-1
- Update to 3.13.4
* Thu Jul 24 2014 Matthias Clasen <mclasen@redhat.com> - 3.12.1-3
- Fix a memory corruption crash (#1116478)
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.12.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu May 15 2014 Kalev Lember <kalevlember@gmail.com> - 3.12.1-1
- Update to 3.12.1
* Tue Mar 25 2014 Kalev Lember <kalevlember@gmail.com> - 3.12.0-1
- Update to 3.12.0
* Thu Mar 20 2014 Richard Hughes <rhughes@redhat.com> - 3.11.92-1
- Update to 3.11.92
* Sat Mar 08 2014 Richard Hughes <rhughes@redhat.com> - 3.11.91-1
- Update to 3.11.91
* Fri Feb 28 2014 Richard Hughes <rhughes@redhat.com> - 3.11.90-1
- Update to 3.11.90
* Wed Feb 19 2014 Kalev Lember <kalevlember@gmail.com> - 3.10.1.1-5
- Rebuilt for libgnome-desktop soname bump
* Fri Nov 29 2013 Rui Matos <rmatos@redhat.com> - 3.10.1.1-4
- Resolves: rhbz#1035548 - Disables the GOA page in new user mode
* Thu Nov 28 2013 Rui Matos <rmatos@redhat.com> - 3.10.1.1-3
- Resolves: rhbz#1027507 - [abrt] gnome-initial-setup-3.10.1.1-2.fc20: magazine_chain_pop_head
* Fri Nov 1 2013 Matthias Clasen <mclasen@redhat.com> - 3.10.1.1-2
- Fix goa add dialog to not be empty
* Mon Oct 28 2013 Richard Hughes <rhughes@redhat.com> - 3.10.1.1-1
- Update to 3.10.1.1
* Thu Sep 26 2013 Kalev Lember <kalevlember@gmail.com> - 3.10.0.1-1
- Update to 3.10.0.1
* Wed Sep 25 2013 Kalev Lember <kalevlember@gmail.com> - 3.10.0-1
- Update to 3.10.0
* Tue Sep 03 2013 Kalev Lember <kalevlember@gmail.com> - 0.12-7
- Rebuilt for libgnome-desktop soname bump
* Fri Aug 23 2013 Kalev Lember <kalevlember@gmail.com> - 0.12-6
- Rebuilt for gnome-online-accounts soname bump
* Fri Aug 09 2013 Kalev Lember <kalevlember@gmail.com> - 0.12-5
- Rebuilt for cogl 1.15.4 soname bump
* Tue Aug 06 2013 Adam Williamson <awilliam@redhat.com> - 0.12-4
- rebuild for new libgweather
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.12-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Fri Jun 21 2013 Kalev Lember <kalevlember@gmail.com> - 0.12-2
- Rebuilt for libgweather 3.9.3 soname bump
* Mon Jun 17 2013 Rui Matos <rmatos@redhat.com> - 0.12-1
- Update to 0.12
* Fri Jun 7 2013 Matthias Clasen <mclasen@redhat.com> - 0.11-2
- Require polkit-js-engine
* Tue May 28 2013 Matthias Clasen <mclasen@redhat.com> - 0.11-1
- Update to 0.11
* Tue May 14 2013 Rui Matos <rmatos@redhat.com> - 0.10-1
- Update to 0.10
- Add BuildRequires on polkit-devel
- Update files list
* Thu May 2 2013 Rui Matos <rmatos@redhat.com> - 0.9-2
- Remove unused patches
- Add build requires for ibus
* Tue Apr 16 2013 Matthias Clasen <mclasen@redhat.com> - 0.9-1
- Update to 0.9
* Tue Apr 16 2013 Ray Strode <rstrode@redhat.com> 0.8-4
- Add requires for keyboard viewer app
* Wed Mar 20 2013 Ray Strode <rstrode@redhat.com> 0.8-3
- Add cosimoc fix for gd page transitions
* Wed Mar 20 2013 Ray Strode <rstrode@redhat.com> 0.8-2
- Disable gd page transitions for now since they don't
completely work right (ask adamw).
- Fix crasher when realmd goes away
* Tue Mar 19 2013 Matthias Clasen <mclasen@redhat.com> - 0.8-1
- Update to 0.8
* Tue Mar 12 2013 Matthias Clasen <mclasen@redhat.com> - 0.7-1
- Update to 0.7
* Thu Feb 21 2013 Kalev Lember <kalevlember@gmail.com> - 0.6-4
- Rebuilt for cogl soname bump
* Wed Feb 20 2013 Kalev Lember <kalevlember@gmail.com> - 0.6-3
- Rebuilt for libgnome-desktop soname bump
* Fri Jan 25 2013 Peter Robinson <pbrobinson@fedoraproject.org> 0.6-2
- Rebuild for new cogl
* Wed Jan 16 2013 Matthias Clasen <mclasen@redhat.com> - 0.6-1
- 0.6
* Fri Jan 11 2013 Matthias Clasen <mclasen@redhat.com> - 0.5-1
- 0.5
* Fri Dec 21 2012 Kalev Lember <kalevlember@gmail.com> - 0.4-2
- Rebuilt for libgweather soname bump
* Thu Nov 22 2012 Matthias Clasen <mclasen@redhat.com> - 0.4-1
- 0.4
* Fri Oct 26 2012 Jasper St. Pierre <jstpierre@mecheye.net> - 0.3-3
- Add krb5
* Fri Oct 26 2012 Jasper St. Pierre <jstpierre@mecheye.net> - 0.3-2
- 0.3-2
* Thu Oct 18 2012 Matthias Clsaen <mclasen@redhat.com> - 0.3-1
- 0.3
* Fri Sep 14 2012 Matthias Clasen <mclasen@redhat.com> - 0.2-2
- Add Requires: gdm
* Wed Aug 29 2012 Jasper St. Pierre <jstpierre@mecheye.net> - 0.2-1
- Update to 0.2
* Fri Jun 08 2012 Jasper St. Pierre <jstpierre@mecheye.net> - 0.1
- Initial packaging.