Files
main/desktop/gnome/base/gnome-control-center/files/0003-build-Make-grilo-and-gnome-online-accounts-optional.patch

264 lines
8.7 KiB
Diff

From b7726d558c10c2c3b6c987954a0367116ccdfc18 Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Mon, 4 Mar 2019 01:22:13 +0200
Subject: [PATCH 3/5] build: Make grilo and gnome-online-accounts optional
grilo requires goa
---
meson.build | 15 ++++++++++++++-
meson_options.txt | 2 ++
panels/background/bg-pictures-source.c | 20 ++++++++++++++++++++
panels/background/meson.build | 7 +++++--
panels/meson.build | 5 ++++-
shell/cc-panel-loader.c | 4 ++++
6 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/meson.build b/meson.build
index acf68a1da..24f54815f 100644
--- a/meson.build
+++ b/meson.build
@@ -124,7 +124,7 @@ gio_dep = dependency('gio-2.0')
glib_dep = dependency('glib-2.0', version: '>= 2.56.0')
gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.33.4')
gnome_settings_dep = dependency('gnome-settings-daemon', version: '>= 3.27.90')
-goa_dep = dependency('goa-1.0', version: goa_req_version)
+goa_dep = dependency('goa-1.0', version: goa_req_version, required: get_option('goa'))
gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 3.37.1')
libxml_dep = dependency('libxml-2.0')
polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.114')
@@ -138,6 +138,19 @@ epoxy_dep = dependency('epoxy')
m_dep = cc.find_library('m')
+enable_goa = goa_dep.found()
+config_h.set('BUILD_GOA', enable_goa,
+ description: 'Define to 1 to build the Online Accounts panel')
+
+grilo_dep = dependency('grilo-0.3', version: '>= 0.3.0', required: get_option('grilo'))
+enable_grilo = grilo_dep.found()
+config_h.set('HAVE_GRILO', enable_grilo,
+ description: 'Define to 1 to enable grilo support')
+
+if enable_grilo and not enable_goa
+ error('Grilo support requires goa')
+endif
+
common_deps = [
gio_dep,
glib_dep,
diff --git a/meson_options.txt b/meson_options.txt
index 5c558557d..17e3551fa 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,6 +1,8 @@
option('bluetooth', type: 'boolean', value: true, description: 'build with Bluetooth support')
option('cheese', type: 'boolean', value: true, description: 'build with cheese webcam support')
option('documentation', type: 'boolean', value: false, description: 'build documentation')
+option('goa', type: 'feature', value: 'auto', description: 'build with gnome-online-accounts support')
+option('grilo', type: 'feature', value: 'auto', description: 'build with grilo support (background panel)')
option('ibus', type: 'boolean', value: true, description: 'build with IBus support')
option('kerberos', type: 'feature', value: 'auto', description: 'build with kerberos support')
option('network_manager', type: 'boolean', value: true, description: 'build with NetworkManager support')
diff --git a/panels/background/bg-pictures-source.c b/panels/background/bg-pictures-source.c
index 3a3027b13..edc6c3247 100644
--- a/panels/background/bg-pictures-source.c
+++ b/panels/background/bg-pictures-source.c
@@ -23,13 +23,17 @@
#include "bg-pictures-source.h"
+#ifdef HAVE_GRILO
#include "cc-background-grilo-miner.h"
+#endif
#include "cc-background-item.h"
#include <string.h>
#include <cairo-gobject.h>
#include <gio/gio.h>
+#ifdef HAVE_GRILO
#include <grilo.h>
+#endif
#include <libgnome-desktop/gnome-desktop-thumbnail.h>
#include <gdesktop-enums.h>
@@ -43,7 +47,9 @@ struct _BgPicturesSource
GCancellable *cancellable;
+#ifdef HAVE_GRILO
CcBackgroundGriloMiner *grl_miner;
+#endif
GFileMonitor *picture_dir_monitor;
GFileMonitor *cache_dir_monitor;
@@ -83,7 +89,9 @@ bg_pictures_source_dispose (GObject *object)
g_clear_object (&source->cancellable);
}
+#ifdef HAVE_GRILO
g_clear_object (&source->grl_miner);
+#endif
G_OBJECT_CLASS (bg_pictures_source_parent_class)->dispose (object);
}
@@ -392,7 +400,9 @@ add_single_file (BgPicturesSource *bg_source,
const gchar *pictures_path;
g_autoptr(GFile) pictures_dir = NULL;
g_autoptr(GFile) cache_dir = NULL;
+#ifdef HAVE_GRILO
GrlMedia *media;
+#endif
/* find png and jpeg files */
if (!content_type)
@@ -432,14 +442,17 @@ add_single_file (BgPicturesSource *bg_source,
"source-url", source_uri,
NULL);
+#ifdef HAVE_GRILO
media = g_object_get_data (G_OBJECT (file), "grl-media");
if (media == NULL)
+#endif
{
g_object_set_data_full (G_OBJECT (file), "item", g_object_ref (item), g_object_unref);
g_file_read_async (file, G_PRIORITY_DEFAULT,
bg_source->cancellable,
picture_opened_for_read, bg_source);
}
+#ifdef HAVE_GRILO
else
{
g_autoptr(GFile) native_file = NULL;
@@ -476,6 +489,7 @@ add_single_file (BgPicturesSource *bg_source,
picture_copied_for_read,
bg_source);
}
+#endif
retval = TRUE;
@@ -496,6 +510,7 @@ add_single_file_from_info (BgPicturesSource *bg_source,
return add_single_file (bg_source, file, content_type, mtime);
}
+#ifdef HAVE_GRILO
static gboolean
add_single_file_from_media (BgPicturesSource *bg_source,
GFile *file,
@@ -520,6 +535,7 @@ add_single_file_from_media (BgPicturesSource *bg_source,
return add_single_file (bg_source, file, content_type, (guint64) mtime_unix);
}
+#endif
gboolean
bg_pictures_source_add (BgPicturesSource *bg_source,
@@ -804,6 +820,7 @@ monitor_path (BgPicturesSource *self,
return monitor;
}
+#ifdef HAVE_GRILO
static void
media_found_cb (BgPicturesSource *self, GrlMedia *media)
{
@@ -815,6 +832,7 @@ media_found_cb (BgPicturesSource *self, GrlMedia *media)
g_object_set_data_full (G_OBJECT (file), "grl-media", g_object_ref (media), g_object_unref);
add_single_file_from_media (self, file, media);
}
+#endif
static void
bg_pictures_source_init (BgPicturesSource *self)
@@ -837,9 +855,11 @@ bg_pictures_source_init (BgPicturesSource *self)
cache_path = bg_pictures_source_get_cache_path ();
self->cache_dir_monitor = monitor_path (self, cache_path);
+#ifdef HAVE_GRILO
self->grl_miner = cc_background_grilo_miner_new ();
g_signal_connect_object (self->grl_miner, "media-found", G_CALLBACK (media_found_cb), self, G_CONNECT_SWAPPED);
cc_background_grilo_miner_start (self->grl_miner);
+#endif
}
BgPicturesSource *
diff --git a/panels/background/meson.build b/panels/background/meson.build
index e9fa398d4..db18ffd8c 100644
--- a/panels/background/meson.build
+++ b/panels/background/meson.build
@@ -81,20 +81,23 @@ sources = common_sources + files(
'bg-source.c',
'bg-wallpapers-source.c',
'cc-background-chooser.c',
- 'cc-background-grilo-miner.c',
'cc-background-item.c',
'cc-background-panel.c',
'cc-background-preview.c',
'cc-background-xml.c',
)
+if enable_grilo
+ sources += files('cc-background-grilo-miner.c')
+endif
+
deps = common_deps + [
gdk_pixbuf_dep,
gnome_desktop_dep,
goa_dep,
libxml_dep,
dependency('cairo-gobject'),
- dependency('grilo-0.3', version: '>= 0.3.0')
+ grilo_dep
]
cflags += [
diff --git a/panels/meson.build b/panels/meson.build
index 6798f6997..90bb3deef 100644
--- a/panels/meson.build
+++ b/panels/meson.build
@@ -16,7 +16,6 @@ panels = [
'microphone',
'mouse',
'notifications',
- 'online-accounts',
'power',
'printers',
'region',
@@ -29,6 +28,10 @@ panels = [
'user-accounts'
]
+if enable_goa
+ panels += ['online-accounts']
+endif
+
if enable_network_manager
panels += ['network']
endif
diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c
index f20384394..b10611c80 100644
--- a/shell/cc-panel-loader.c
+++ b/shell/cc-panel-loader.c
@@ -48,7 +48,9 @@ extern GType cc_network_panel_get_type (void);
extern GType cc_wifi_panel_get_type (void);
#endif /* BUILD_NETWORK */
extern GType cc_notifications_panel_get_type (void);
+#ifdef BUILD_GOA
extern GType cc_goa_panel_get_type (void);
+#endif /* BUILD_GOA */
extern GType cc_power_panel_get_type (void);
extern GType cc_printers_panel_get_type (void);
extern GType cc_region_panel_get_type (void);
@@ -112,7 +114,9 @@ static CcPanelLoaderVtable default_panels[] =
PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func),
#endif
PANEL_TYPE("notifications", cc_notifications_panel_get_type, NULL),
+#ifdef BUILD_GOA
PANEL_TYPE("online-accounts", cc_goa_panel_get_type, NULL),
+#endif
PANEL_TYPE("power", cc_power_panel_get_type, NULL),
PANEL_TYPE("printers", cc_printers_panel_get_type, NULL),
PANEL_TYPE("region", cc_region_panel_get_type, NULL),
--
2.26.3