gnu: gnome-control-center: Update to 3.30.3.
* gnu/packages/gnome.scm (gnome-control-center): Update to 3.30.3. [source](patches): New field. [arguments]: Adjust "patch-paths" phase. [inputs]: Add libsecret and udisks. * gnu/packages/patches/gnome-control-center-use-udisks-to-get-disk-size.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
parent
bba7a77ed9
commit
982c0b368d
|
@ -889,6 +889,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/glog-gcc-5-demangling.patch \
|
%D%/packages/patches/glog-gcc-5-demangling.patch \
|
||||||
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
|
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
|
||||||
%D%/packages/patches/gmp-faulty-test.patch \
|
%D%/packages/patches/gmp-faulty-test.patch \
|
||||||
|
%D%/packages/patches/gnome-control-center-use-udisks-to-get-disk-size.patch \
|
||||||
%D%/packages/patches/gnome-shell-theme.patch \
|
%D%/packages/patches/gnome-shell-theme.patch \
|
||||||
%D%/packages/patches/gnome-tweaks-search-paths.patch \
|
%D%/packages/patches/gnome-tweaks-search-paths.patch \
|
||||||
%D%/packages/patches/gnutls-skip-trust-store-test.patch \
|
%D%/packages/patches/gnutls-skip-trust-store-test.patch \
|
||||||
|
|
|
@ -5809,7 +5809,7 @@ devices using the GNOME desktop.")
|
||||||
(define-public gnome-control-center
|
(define-public gnome-control-center
|
||||||
(package
|
(package
|
||||||
(name "gnome-control-center")
|
(name "gnome-control-center")
|
||||||
(version "3.28.2")
|
(version "3.30.3")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||||
|
@ -5817,7 +5817,10 @@ devices using the GNOME desktop.")
|
||||||
name "-" version ".tar.xz"))
|
name "-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0d6pjdbsra16nav8201kaadja5yma92bhziki9601ilk2ry3v7pz"))))
|
"0gih1cmqbv803kp30704sllghb0impa0mmv3j8pndfg4zr2mnq9r"))
|
||||||
|
(patches
|
||||||
|
(search-patches
|
||||||
|
"gnome-control-center-use-udisks-to-get-disk-size.patch"))))
|
||||||
(build-system meson-build-system)
|
(build-system meson-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:glib-or-gtk? #t
|
'(#:glib-or-gtk? #t
|
||||||
|
@ -5834,7 +5837,7 @@ devices using the GNOME desktop.")
|
||||||
(substitute* "panels/datetime/tz.h"
|
(substitute* "panels/datetime/tz.h"
|
||||||
(("/usr/share/zoneinfo/zone.tab")
|
(("/usr/share/zoneinfo/zone.tab")
|
||||||
(string-append tzdata "/share/zoneinfo/zone.tab")))
|
(string-append tzdata "/share/zoneinfo/zone.tab")))
|
||||||
(substitute* "panels/datetime/test-endianess.c"
|
(substitute* "tests/datetime/test-endianess.c"
|
||||||
(("/usr/share/locale")
|
(("/usr/share/locale")
|
||||||
(string-append libc "/share/locale")))
|
(string-append libc "/share/locale")))
|
||||||
(substitute* "panels/region/cc-region-panel.c"
|
(substitute* "panels/region/cc-region-panel.c"
|
||||||
|
@ -5877,6 +5880,7 @@ devices using the GNOME desktop.")
|
||||||
("libgudev" ,libgudev)
|
("libgudev" ,libgudev)
|
||||||
("libgtop" ,libgtop)
|
("libgtop" ,libgtop)
|
||||||
("libpwquality" ,libpwquality)
|
("libpwquality" ,libpwquality)
|
||||||
|
("libsecret" ,libsecret)
|
||||||
("libsoup" ,libsoup)
|
("libsoup" ,libsoup)
|
||||||
("libxml2" ,libxml2)
|
("libxml2" ,libxml2)
|
||||||
("libwacom" ,libwacom)
|
("libwacom" ,libwacom)
|
||||||
|
@ -5888,6 +5892,7 @@ devices using the GNOME desktop.")
|
||||||
("pulseaudio" ,pulseaudio)
|
("pulseaudio" ,pulseaudio)
|
||||||
("smbclient" ,samba)
|
("smbclient" ,samba)
|
||||||
("tzdata" ,tzdata)
|
("tzdata" ,tzdata)
|
||||||
|
("udisks" ,udisks)
|
||||||
("upower" ,upower)))
|
("upower" ,upower)))
|
||||||
(synopsis "Utilities to configure the GNOME desktop")
|
(synopsis "Utilities to configure the GNOME desktop")
|
||||||
(home-page "https://www.gnome.org/")
|
(home-page "https://www.gnome.org/")
|
||||||
|
|
|
@ -0,0 +1,221 @@
|
||||||
|
This patch is derived from upstream commit 2520aea6 and fixes upstream issues
|
||||||
|
285 and 302. See https://gitlab.gnome.org/GNOME/gcr/merge_requests/387,
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-control-center/issues/285 and
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-control-center/issues/302.
|
||||||
|
|
||||||
|
diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c
|
||||||
|
index e2276a295b3fd9de01b30fc3369069b5d33ba5b7..ff47c1fef2493bcc7ab34f9e8716d570d8d370ed 100644
|
||||||
|
--- a/panels/info/cc-info-overview-panel.c
|
||||||
|
+++ b/panels/info/cc-info-overview-panel.c
|
||||||
|
@@ -36,6 +36,7 @@
|
||||||
|
#include <glibtop/mountlist.h>
|
||||||
|
#include <glibtop/mem.h>
|
||||||
|
#include <glibtop/sysinfo.h>
|
||||||
|
+#include <udisks/udisks.h>
|
||||||
|
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
|
||||||
|
@@ -81,9 +82,7 @@ typedef struct
|
||||||
|
|
||||||
|
GCancellable *cancellable;
|
||||||
|
|
||||||
|
- /* Free space */
|
||||||
|
- GList *primary_mounts;
|
||||||
|
- guint64 total_bytes;
|
||||||
|
+ UDisksClient *client;
|
||||||
|
|
||||||
|
GraphicsData *graphics_data;
|
||||||
|
} CcInfoOverviewPanelPrivate;
|
||||||
|
@@ -96,8 +95,6 @@ struct _CcInfoOverviewPanel
|
||||||
|
CcInfoOverviewPanelPrivate *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
-static void get_primary_disc_info_start (CcInfoOverviewPanel *self);
|
||||||
|
-
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *major;
|
||||||
|
@@ -486,111 +483,51 @@ get_os_type (void)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-query_done (GFile *file,
|
||||||
|
- GAsyncResult *res,
|
||||||
|
- CcInfoOverviewPanel *self)
|
||||||
|
+get_primary_disc_info (CcInfoOverviewPanel *self)
|
||||||
|
{
|
||||||
|
CcInfoOverviewPanelPrivate *priv;
|
||||||
|
- g_autoptr(GFileInfo) info = NULL;
|
||||||
|
- g_autoptr(GError) error = NULL;
|
||||||
|
-
|
||||||
|
- info = g_file_query_filesystem_info_finish (file, res, &error);
|
||||||
|
- if (info != NULL)
|
||||||
|
- {
|
||||||
|
- priv = cc_info_overview_panel_get_instance_private (self);
|
||||||
|
- priv->total_bytes += g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE);
|
||||||
|
- }
|
||||||
|
- else
|
||||||
|
- {
|
||||||
|
- if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||||
|
- return;
|
||||||
|
- else
|
||||||
|
- {
|
||||||
|
- g_autofree char *path = NULL;
|
||||||
|
- path = g_file_get_path (file);
|
||||||
|
- g_warning ("Failed to get filesystem free space for '%s': %s", path, error->message);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ GDBusObjectManager *manager;
|
||||||
|
+ g_autolist(GDBusObject) objects = NULL;
|
||||||
|
+ GList *l;
|
||||||
|
+ guint64 total_size;
|
||||||
|
|
||||||
|
- /* And onto the next element */
|
||||||
|
- get_primary_disc_info_start (self);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static void
|
||||||
|
-get_primary_disc_info_start (CcInfoOverviewPanel *self)
|
||||||
|
-{
|
||||||
|
- GUnixMountEntry *mount;
|
||||||
|
- g_autoptr(GFile) file = NULL;
|
||||||
|
- CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
|
||||||
|
+ priv = cc_info_overview_panel_get_instance_private (self);
|
||||||
|
+ total_size = 0;
|
||||||
|
|
||||||
|
- if (priv->primary_mounts == NULL)
|
||||||
|
+ if (!priv->client)
|
||||||
|
{
|
||||||
|
- g_autofree char *size = NULL;
|
||||||
|
-
|
||||||
|
- size = g_format_size (priv->total_bytes);
|
||||||
|
- gtk_label_set_text (GTK_LABEL (priv->disk_label), size);
|
||||||
|
-
|
||||||
|
+ gtk_label_set_text (GTK_LABEL (priv->disk_label), _("Unknown"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- mount = priv->primary_mounts->data;
|
||||||
|
- priv->primary_mounts = g_list_remove (priv->primary_mounts, mount);
|
||||||
|
- file = g_file_new_for_path (g_unix_mount_get_mount_path (mount));
|
||||||
|
- g_unix_mount_free (mount);
|
||||||
|
-
|
||||||
|
- g_file_query_filesystem_info_async (file,
|
||||||
|
- G_FILE_ATTRIBUTE_FILESYSTEM_SIZE,
|
||||||
|
- 0,
|
||||||
|
- priv->cancellable,
|
||||||
|
- (GAsyncReadyCallback) query_done,
|
||||||
|
- self);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static void
|
||||||
|
-get_primary_disc_info (CcInfoOverviewPanel *self)
|
||||||
|
-{
|
||||||
|
- GList *points;
|
||||||
|
- GList *p;
|
||||||
|
- GHashTable *hash;
|
||||||
|
- CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
|
||||||
|
-
|
||||||
|
- hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
|
- points = g_unix_mount_points_get (NULL);
|
||||||
|
-
|
||||||
|
- /* If we do not have /etc/fstab around, try /etc/mtab */
|
||||||
|
- if (points == NULL)
|
||||||
|
- points = g_unix_mounts_get (NULL);
|
||||||
|
+ manager = udisks_client_get_object_manager (priv->client);
|
||||||
|
+ objects = g_dbus_object_manager_get_objects (manager);
|
||||||
|
|
||||||
|
- for (p = points; p != NULL; p = p->next)
|
||||||
|
+ for (l = objects; l != NULL; l = l->next)
|
||||||
|
{
|
||||||
|
- GUnixMountEntry *mount = p->data;
|
||||||
|
- const char *mount_path;
|
||||||
|
- const char *device_path;
|
||||||
|
-
|
||||||
|
- mount_path = g_unix_mount_get_mount_path (mount);
|
||||||
|
- device_path = g_unix_mount_get_device_path (mount);
|
||||||
|
-
|
||||||
|
- /* Do not count multiple mounts with same device_path, because it is
|
||||||
|
- * probably something like btrfs subvolume. Use only the first one in
|
||||||
|
- * order to count the real size. */
|
||||||
|
- if (gsd_should_ignore_unix_mount (mount) ||
|
||||||
|
- gsd_is_removable_mount (mount) ||
|
||||||
|
- g_str_has_prefix (mount_path, "/media/") ||
|
||||||
|
- g_str_has_prefix (mount_path, g_get_home_dir ()) ||
|
||||||
|
- g_hash_table_lookup (hash, device_path) != NULL)
|
||||||
|
+ UDisksDrive *drive;
|
||||||
|
+ drive = udisks_object_peek_drive (UDISKS_OBJECT (l->data));
|
||||||
|
+
|
||||||
|
+ /* Skip removable devices */
|
||||||
|
+ if (drive == NULL ||
|
||||||
|
+ udisks_drive_get_removable (drive) ||
|
||||||
|
+ udisks_drive_get_ejectable (drive))
|
||||||
|
{
|
||||||
|
- g_unix_mount_free (mount);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- priv->primary_mounts = g_list_prepend (priv->primary_mounts, mount);
|
||||||
|
- g_hash_table_insert (hash, (gpointer) device_path, (gpointer) device_path);
|
||||||
|
+ total_size += udisks_drive_get_size (drive);
|
||||||
|
}
|
||||||
|
- g_list_free (points);
|
||||||
|
- g_hash_table_destroy (hash);
|
||||||
|
|
||||||
|
- priv->cancellable = g_cancellable_new ();
|
||||||
|
- get_primary_disc_info_start (self);
|
||||||
|
+ if (total_size > 0)
|
||||||
|
+ {
|
||||||
|
+ g_autofree gchar *size = g_format_size (total_size);
|
||||||
|
+ gtk_label_set_text (GTK_LABEL (priv->disk_label), size);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ gtk_label_set_text (GTK_LABEL (priv->disk_label), _("Unknown"));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
@@ -852,8 +789,7 @@ cc_info_overview_panel_finalize (GObject *object)
|
||||||
|
g_clear_object (&priv->cancellable);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (priv->primary_mounts)
|
||||||
|
- g_list_free_full (priv->primary_mounts, (GDestroyNotify) g_unix_mount_free);
|
||||||
|
+ g_clear_object (&priv->client);
|
||||||
|
|
||||||
|
g_free (priv->gnome_version);
|
||||||
|
g_free (priv->gnome_date);
|
||||||
|
@@ -895,6 +831,7 @@ static void
|
||||||
|
cc_info_overview_panel_init (CcInfoOverviewPanel *self)
|
||||||
|
{
|
||||||
|
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
|
||||||
|
+ g_autoptr(GError) error = NULL;
|
||||||
|
|
||||||
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
|
|
||||||
|
@@ -907,6 +844,12 @@ cc_info_overview_panel_init (CcInfoOverviewPanel *self)
|
||||||
|
else
|
||||||
|
gtk_widget_destroy (priv->updates_button);
|
||||||
|
|
||||||
|
+ priv->client = udisks_client_new_sync (NULL, &error);
|
||||||
|
+
|
||||||
|
+ if (error != NULL)
|
||||||
|
+ g_warning ("Unable to get UDisks client: %s. Disk information will not be available.",
|
||||||
|
+ error->message);
|
||||||
|
+
|
||||||
|
info_overview_panel_setup_overview (self);
|
||||||
|
info_overview_panel_setup_virt (self);
|
||||||
|
}
|
||||||
|
diff --git a/panels/info/meson.build b/panels/info/meson.build
|
||||||
|
index 03742551314f91b60e3ec1caad153ff314b93310..c54e5fdaff3c6ddb59cca8ee9a2bf5a0212bf196 100644
|
||||||
|
--- a/panels/info/meson.build
|
||||||
|
+++ b/panels/info/meson.build
|
||||||
|
@@ -61,6 +61,7 @@ sources += gnome.compile_resources(
|
||||||
|
|
||||||
|
deps = common_deps + [
|
||||||
|
polkit_gobject_dep,
|
||||||
|
+ dependency('udisks2', version: '>= 2.1.8'),
|
||||||
|
dependency('libgtop-2.0')
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in New Issue