guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/10: gnu: gnome-control-center: Update to 3.30.3.


From: guix-commits
Subject: 01/10: gnu: gnome-control-center: Update to 3.30.3.
Date: Mon, 15 Jul 2019 09:48:52 -0400 (EDT)

kkebreau pushed a commit to branch core-updates
in repository guix.

commit 982c0b368daa2443de6fb642d73469d6a6ca468a
Author: Kei Kebreau <address@hidden>
Date:   Thu Jun 27 10:01:12 2019 -0400

    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.
---
 gnu/local.mk                                       |   1 +
 gnu/packages/gnome.scm                             |  11 +-
 ...ontrol-center-use-udisks-to-get-disk-size.patch | 221 +++++++++++++++++++++
 3 files changed, 230 insertions(+), 3 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 0a34b91..123ff11 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -889,6 +889,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/glog-gcc-5-demangling.patch             \
   %D%/packages/patches/gmp-arm-asm-nothumb.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-tweaks-search-paths.patch         \
   %D%/packages/patches/gnutls-skip-trust-store-test.patch      \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index eb25149..ea854ff 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5809,7 +5809,7 @@ devices using the GNOME desktop.")
 (define-public gnome-control-center
   (package
     (name "gnome-control-center")
-    (version "3.28.2")
+    (version "3.30.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5817,7 +5817,10 @@ devices using the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0d6pjdbsra16nav8201kaadja5yma92bhziki9601ilk2ry3v7pz"))))
+                "0gih1cmqbv803kp30704sllghb0impa0mmv3j8pndfg4zr2mnq9r"))
+              (patches
+               (search-patches
+                "gnome-control-center-use-udisks-to-get-disk-size.patch"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -5834,7 +5837,7 @@ devices using the GNOME desktop.")
                (substitute* "panels/datetime/tz.h"
                  (("/usr/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")
                   (string-append libc "/share/locale")))
                (substitute* "panels/region/cc-region-panel.c"
@@ -5877,6 +5880,7 @@ devices using the GNOME desktop.")
        ("libgudev" ,libgudev)
        ("libgtop" ,libgtop)
        ("libpwquality" ,libpwquality)
+       ("libsecret" ,libsecret)
        ("libsoup" ,libsoup)
        ("libxml2" ,libxml2)
        ("libwacom" ,libwacom)
@@ -5888,6 +5892,7 @@ devices using the GNOME desktop.")
        ("pulseaudio" ,pulseaudio)
        ("smbclient" ,samba)
        ("tzdata" ,tzdata)
+       ("udisks" ,udisks)
        ("upower" ,upower)))
     (synopsis "Utilities to configure the GNOME desktop")
     (home-page "https://www.gnome.org/";)
diff --git 
a/gnu/packages/patches/gnome-control-center-use-udisks-to-get-disk-size.patch 
b/gnu/packages/patches/gnome-control-center-use-udisks-to-get-disk-size.patch
new file mode 100644
index 0000000..823684b
--- /dev/null
+++ 
b/gnu/packages/patches/gnome-control-center-use-udisks-to-get-disk-size.patch
@@ -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')
+ ]
+ 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]