From c3b0d1123cae5a895452d2a8d75e663e76cbf5bd Mon Sep 17 00:00:00 2001 From: Timo Tambet Date: Sat, 25 Feb 2017 23:29:10 +0200 Subject: [PATCH 1/5] Make bluetooth/colord/goa/kerberos/wacom optional Upstream is not interested in any part of this patch: https://bugzilla.gnome.org/686840 https://bugzilla.gnome.org/697478 https://bugzilla.gnome.org/700145 Signed-off-by: Ole Reifschneider Signed-off-by: Gilles Dartiguelongue Signed-off-by: Alexandre Rostovtsev --- configure.ac | 171 ++++++++++++++++++++++++-------- panels/Makefile.am | 10 +- panels/background/Makefile.am | 8 +- panels/background/bg-pictures-source.c | 20 ++++ panels/power/cc-power-panel.c | 2 +- panels/user-accounts/um-realm-manager.c | 9 ++ shell/Makefile.am | 10 +- shell/cc-panel-loader.c | 8 ++ 8 files changed, 188 insertions(+), 50 deletions(-) diff --git a/configure.ac b/configure.ac index 11fc9fc..9566fb7 100644 --- a/configure.ac +++ b/configure.ac @@ -120,10 +120,6 @@ LIBGD_INIT([_view-common static]) PKG_CHECK_MODULES(LIBLANGUAGE, $COMMON_MODULES gnome-desktop-3.0 fontconfig) PKG_CHECK_MODULES(LIBSHORTCUTS, $COMMON_MODULES x11) PKG_CHECK_MODULES(SHELL, $COMMON_MODULES x11 polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) -PKG_CHECK_MODULES(BACKGROUND_PANEL, $COMMON_MODULES cairo-gobject libxml-2.0 gnome-desktop-3.0 - gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED_VERSION - goa-1.0 >= $GOA_REQUIRED_VERSION - grilo-0.3 >= $GRILO_REQUIRED_VERSION) PKG_CHECK_MODULES(DATETIME_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION @@ -141,12 +137,58 @@ PKG_CHECK_MODULES(MOUSE_PANEL, $COMMON_MODULES xi >= 1.2 PKG_CHECK_MODULES(NETWORK_PANEL, $COMMON_MODULES gmodule-2.0 polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) PKG_CHECK_MODULES(NOTIFICATIONS_PANEL, $COMMON_MODULES) -PKG_CHECK_MODULES(ONLINE_ACCOUNTS_PANEL, $COMMON_MODULES goa-1.0 goa-backend-1.0 >= $GOA_REQUIRED_VERSION) -PKG_CHECK_MODULES(COLOR_PANEL, $COMMON_MODULES - colord >= $COLORD_REQUIRED_VERSION - colord-gtk >= $COLORD_GTK_REQUIRED_VERSION - libsoup-2.4 - gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION) + +build_online_accounts=no +background_online_accounts= +AC_ARG_ENABLE([goa], + AS_HELP_STRING([--disable-goa], + [disable online accounts management panel]), + [], + [enable_goa=auto]) + +AS_IF([test "$enable_goa" != "no"], + [PKG_CHECK_MODULES([ONLINE_ACCOUNTS_PANEL], + [$COMMON_MODULES goa-1.0 goa-backend-1.0 >= $GOA_REQUIRED_VERSION], + [ + AC_DEFINE(BUILD_ONLINE_ACCOUNTS, 1, [Define to 1 to build the Online Accounts panel]) + build_online_accounts=yes + background_goa_dependencies="goa-1.0 >= $GOA_REQUIRED_VERSION grilo-0.3 >= $GRILO_REQUIRED_VERSION" + ], [ + AS_IF([test "$enable_goa" = "yes"], + [AC_MSG_ERROR([gnome-online-accounts support requested but not found])]) + ]) + ]) +AM_CONDITIONAL(BUILD_ONLINE_ACCOUNTS, test "$build_online_accounts" = "yes") + +PKG_CHECK_MODULES(BACKGROUND_PANEL, $COMMON_MODULES cairo-gobject libxml-2.0 gnome-desktop-3.0 + gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED_VERSION + $background_goa_dependencies) + +build_color=no +AC_ARG_ENABLE([color], + AS_HELP_STRING([--disable-color], + [disable color management panel]), + [], + [enable_color=auto]) + +AS_IF([test "$enable_color" != "no"], + [PKG_CHECK_MODULES([COLOR_PANEL], + [ + $COMMON_MODULES + colord >= $COLORD_REQUIRED_VERSION + colord-gtk >= $COLORD_GTK_REQUIRED_VERSION + libsoup-2.4 + gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION + ], [ + AC_DEFINE(BUILD_COLOR, 1, [Define to 1 to build the Color panel]) + build_color=yes + ], [ + AS_IF([test "$enable_color" = "yes"], + [AC_MSG_ERROR([colord support requested but not found])]) + ]) + ]) +AM_CONDITIONAL(BUILD_COLOR, test "$build_color" = "yes") + PKG_CHECK_MODULES(PRINTERS_PANEL, $COMMON_MODULES polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION smbclient) @@ -254,17 +296,27 @@ else fi # Check for gnome-bluetooth -PKG_CHECK_MODULES(BLUETOOTH, $COMMON_MODULES gnome-bluetooth-1.0 >= 3.18.2, - [have_bluetooth=yes], have_bluetooth=no) -if test "x$have_bluetooth" = xyes ; then - AC_DEFINE(BUILD_BLUETOOTH, 1, [Define to 1 to build the Bluetooth panel]) -else - linux_usb_error_or_warn "*** Bluetooth panel will not be built" -fi -AM_CONDITIONAL(BUILD_BLUETOOTH, [test x$have_bluetooth = xyes]) -if test x${have_bluetooth} = xyes; then - AC_DEFINE(HAVE_BLUETOOTH, 1, [Define to 1 if bluetooth support is available]) -fi +have_bluetooth=no +AC_ARG_ENABLE([bluetooth], + AS_HELP_STRING([--disable-bluetooth], + [disable bluetooth management panel]), + [], + [enable_bluetooth=auto]) + +AS_IF([test "$enable_bluetooth" = "yes"], + [PKG_CHECK_MODULES([BLUETOOTH], + [$COMMON_MODULES gnome-bluetooth-1.0 >= 3.18.2], + [ + AC_DEFINE(BUILD_BLUETOOTH, 1, [Define to 1 to build the Bluetooth panel]) + have_bluetooth=yes + ], + [ + have_bluetooth=no + AS_IF([test "$enable_bluetooth" = "yes"], + [AC_MSG_ERROR([bluetooth support requested but not found])]) + ]) + ]) +AM_CONDITIONAL(BUILD_BLUETOOTH, [test "$have_bluetooth" = "yes"]) # Check for CUPS 1.4 or newer AC_PROG_SED @@ -319,32 +371,52 @@ fi AM_CONDITIONAL(BUILD_CHEESE, test x${have_cheese} = xyes) # Wacom -PKG_CHECK_MODULES(WACOM_PANEL, $COMMON_MODULES - gnome-settings-daemon >= $GSD_REQUIRED_VERSION - xi >= 1.2 x11 libwacom >= $LIBWACOM_REQUIRED_VERSION - gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION - clutter-gtk-1.0 - clutter-1.0 >= $CLUTTER_REQUIRED_VERSION, - [have_wacom=yes], [have_wacom=no]) +AC_ARG_ENABLE([wacom], + AS_HELP_STRING([--disable-wacom], + [disable wacom management panel]), + [], + [enable_wacom=yes]) +AS_IF([test "x$enable_wacom" = "xyes"], + [PKG_CHECK_MODULES([WACOM_PANEL], + [ + $COMMON_MODULES + gnome-settings-daemon >= $GSD_REQUIRED_VERSION + xi >= 1.2 x11 libwacom >= $LIBWACOM_REQUIRED_VERSION + gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION + clutter-gtk-1.0 + clutter-1.0 >= $CLUTTER_REQUIRED_VERSION + ], [ + have_wacom=yes + AC_DEFINE(BUILD_WACOM, 1, [Define to 1 to build the Wacom panel]) + AC_DEFINE(HAVE_WACOM, 1, [Define to 1 is Wacom is supportted]) + ], [ + have_wacom=no + AC_MSG_ERROR([wacom support requested but not found]) + ]) + ]) -if test "x$have_wacom" = xyes ; then - AC_DEFINE(BUILD_WACOM, 1, [Define to 1 to build the Wacom panel]) - AC_DEFINE(HAVE_WACOM, 1, [Define to 1 is Wacom is supportted]) -else - linux_usb_error_or_warn "*** Wacom panel will not be built" -fi AM_CONDITIONAL(BUILD_WACOM, [test x${have_wacom} = xyes]) # Kerberos kerberos support -AC_PATH_PROG(KRB5_CONFIG, krb5-config, no) -if test "$KRB5_CONFIG" = "no"; then - AC_MSG_ERROR([krb5-config executable not found in your path - should be installed with the kerberos libraries]) -fi - -AC_MSG_CHECKING(for krb5 libraries and flags) -KRB5_CFLAGS="`$KRB5_CONFIG --cflags`" -KRB5_LIBS="`$KRB5_CONFIG --libs`" -AC_MSG_RESULT($KRB5_CFLAGS $KRB5_LIBS) +AC_ARG_ENABLE([kerberos], + AS_HELP_STRING([--disable-kerberos], + [disable kerberos support (default: enabled)]), + [], + [enable_kerberos=yes]) + +AS_IF([test "$enable_kerberos" != "no"], + [ + AC_PATH_PROG(KRB5_CONFIG, krb5-config, no) + + AS_IF([test "$KRB5_CONFIG" = "no"], + AC_MSG_ERROR([krb5-config executable not found in your path - should be installed with the kerberos libraries])) + + AC_MSG_CHECKING([for krb5 libraries and flags]) + KRB5_CFLAGS="`$KRB5_CONFIG --cflags`" + KRB5_LIBS="`$KRB5_CONFIG --libs`" + AC_MSG_RESULT($KRB5_CFLAGS $KRB5_LIBS) + AC_DEFINE(HAVE_KERBEROS, 1, [defined if krb5 is available]) + ]) AC_SUBST(KRB5_CFLAGS) AC_SUBST(KRB5_LIBS) @@ -576,11 +648,24 @@ if test "x$have_bluetooth" = "xyes"; then else AC_MSG_NOTICE([ Bluetooth panel disabled]) fi + +if test "x$build_color" = "xyes"; then + AC_MSG_NOTICE([** colord (Color panel)]) +else + AC_MSG_NOTICE([ Color panel disabled]) +fi + + if test "x$have_cheese" = "xyes"; then AC_MSG_NOTICE([** Cheese (Users panel webcam support)]) else AC_MSG_NOTICE([ Users panel webcam support disabled]) fi +if test "x$build_online_accounts" = "xyes"; then + AC_MSG_NOTICE([** gnome-online-accounts (Online Accounts panel)]) +else + AC_MSG_NOTICE([ Online Accounts panel disabled]) +fi if test "x$have_wacom" = "xyes"; then AC_MSG_NOTICE([** wacom (Wacom tablet panel)]) else diff --git a/panels/Makefile.am b/panels/Makefile.am index 507cd2f..2806c45 100644 --- a/panels/Makefile.am +++ b/panels/Makefile.am @@ -2,11 +2,9 @@ SUBDIRS= \ common \ background \ power \ - color \ display \ mouse \ notifications \ - online-accounts \ region \ info \ sound \ @@ -19,6 +17,10 @@ SUBDIRS= \ sharing \ printers +if BUILD_COLOR +SUBDIRS += color +endif + if BUILD_WACOM SUBDIRS += wacom endif @@ -31,4 +33,8 @@ if BUILD_BLUETOOTH SUBDIRS += bluetooth endif +if BUILD_ONLINE_ACCOUNTS +SUBDIRS += online-accounts +endif + -include $(top_srcdir)/git.mk diff --git a/panels/background/Makefile.am b/panels/background/Makefile.am index ccb8017..bde4cdf 100644 --- a/panels/background/Makefile.am +++ b/panels/background/Makefile.am @@ -27,8 +27,6 @@ libbackground_chooser_la_SOURCES = \ $(BUILT_SOURCES) \ cc-background-chooser-dialog.c \ cc-background-chooser-dialog.h \ - cc-background-grilo-miner.c \ - cc-background-grilo-miner.h \ cc-background-item.c \ cc-background-item.h \ cc-background-xml.c \ @@ -42,6 +40,12 @@ libbackground_chooser_la_SOURCES = \ bg-colors-source.c \ bg-colors-source.h +if BUILD_ONLINE_ACCOUNTS +libbackground_chooser_la_SOURCES += \ + cc-background-grilo-miner.c \ + cc-background-grilo-miner.h +endif + libbackground_chooser_la_LIBADD = $(PANEL_LIBS) $(BACKGROUND_PANEL_LIBS) libbackground_la_SOURCES = \ diff --git a/panels/background/bg-pictures-source.c b/panels/background/bg-pictures-source.c index a33cee7..408359c 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 BUILD_ONLINE_ACCOUNTS #include "cc-background-grilo-miner.h" +#endif #include "cc-background-item.h" #include #include #include +#ifdef BUILD_ONLINE_ACCOUNTS #include +#endif #include #include @@ -46,7 +50,9 @@ struct _BgPicturesSourcePrivate { GCancellable *cancellable; +#ifdef BUILD_ONLINE_ACCOUNTS CcBackgroundGriloMiner *grl_miner; +#endif GnomeDesktopThumbnailFactory *thumb_factory; @@ -84,7 +90,9 @@ bg_pictures_source_dispose (GObject *object) g_clear_object (&priv->cancellable); } +#ifdef BUILD_ONLINE_ACCOUNTS g_clear_object (&priv->grl_miner); +#endif g_clear_object (&priv->thumb_factory); G_OBJECT_CLASS (bg_pictures_source_parent_class)->dispose (object); @@ -414,7 +422,11 @@ add_single_file (BgPicturesSource *bg_source, gboolean needs_download; gboolean retval = FALSE; GFile *pictures_dir, *cache_dir; +#ifdef BUILD_ONLINE_ACCOUNTS GrlMedia *media; +#else + gpointer media = NULL; +#endif /* find png and jpeg files */ if (!content_type) @@ -473,7 +485,9 @@ add_single_file (BgPicturesSource *bg_source, read_file: +#ifdef BUILD_ONLINE_ACCOUNTS media = g_object_get_data (G_OBJECT (file), "grl-media"); +#endif if (media == NULL) { g_object_set_data_full (G_OBJECT (file), "item", g_object_ref (item), g_object_unref); @@ -556,6 +570,7 @@ add_single_file_from_info (BgPicturesSource *bg_source, return add_single_file (bg_source, file, content_type, mtime, ret_row_ref); } +#ifdef BUILD_ONLINE_ACCOUNTS static gboolean add_single_file_from_media (BgPicturesSource *bg_source, GFile *file, @@ -580,6 +595,7 @@ add_single_file_from_media (BgPicturesSource *bg_source, return add_single_file (bg_source, file, content_type, (guint64) mtime_unix, NULL); } +#endif /* BUILD_ONLINE_ACCOUNTS */ gboolean bg_pictures_source_add (BgPicturesSource *bg_source, @@ -923,6 +939,7 @@ monitor_path (BgPicturesSource *self, return monitor; } +#ifdef BUILD_ONLINE_ACCOUNTS static void media_found_cb (BgPicturesSource *self, GrlMedia *media) { @@ -934,6 +951,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 /* BUILD_ONLINE_ACCOUNTS */ static void bg_pictures_source_init (BgPicturesSource *self) @@ -961,9 +979,11 @@ bg_pictures_source_init (BgPicturesSource *self) priv->cache_dir_monitor = monitor_path (self, cache_path); g_free (cache_path); +#ifdef BUILD_ONLINE_ACCOUNTS priv->grl_miner = cc_background_grilo_miner_new (); g_signal_connect_swapped (priv->grl_miner, "media-found", G_CALLBACK (media_found_cb), self); cc_background_grilo_miner_start (priv->grl_miner); +#endif /* BUILD_ONLINE_ACCOUNTS */ priv->thumb_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE); diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c index db4e69a..7677b58 100644 --- a/panels/power/cc-power-panel.c +++ b/panels/power/cc-power-panel.c @@ -1882,7 +1882,7 @@ add_power_saving_section (CcPowerPanel *self) G_CALLBACK (wifi_switch_changed), self); #endif -#ifdef HAVE_BLUETOOTH +#ifdef BUILD_BLUETOOTH priv->bt_rfkill = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, diff --git a/panels/user-accounts/um-realm-manager.c b/panels/user-accounts/um-realm-manager.c index 2639148..977dab1 100644 --- a/panels/user-accounts/um-realm-manager.c +++ b/panels/user-accounts/um-realm-manager.c @@ -22,7 +22,9 @@ #include "um-realm-manager.h" +#ifdef HAVE_KERBEROS #include +#endif #include #include @@ -698,6 +700,7 @@ login_closure_free (gpointer data) g_slice_free (LoginClosure, login); } +#ifdef HAVE_KERBEROS static krb5_error_code login_perform_kinit (krb5_context k5, const gchar *realm, @@ -761,12 +764,14 @@ login_perform_kinit (krb5_context k5, return code; } +#endif /* HAVE_KERBEROS */ static void kinit_thread_func (GSimpleAsyncResult *async, GObject *object, GCancellable *cancellable) { +#ifdef HAVE_KERBEROS LoginClosure *login = g_simple_async_result_get_op_res_gpointer (async); krb5_context k5 = NULL; krb5_error_code code; @@ -844,6 +849,10 @@ kinit_thread_func (GSimpleAsyncResult *async, if (k5) krb5_free_context (k5); +#else /* HAVE_KERBEROS */ + g_simple_async_result_set_error (async, UM_REALM_ERROR, UM_REALM_ERROR_GENERIC, + _("gnome-control-center was built without kerberos support")); +#endif } void diff --git a/shell/Makefile.am b/shell/Makefile.am index 6af3199..f3e49c7 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -78,14 +78,12 @@ gnome_control_center_LDADD = \ $(top_builddir)/panels/common/liblanguage.la \ $(top_builddir)/panels/common/libdevice.la \ $(top_builddir)/panels/background/libbackground.la \ - $(top_builddir)/panels/color/libcolor.la \ $(top_builddir)/panels/datetime/libdate_time.la \ $(top_builddir)/panels/display/libdisplay.la \ $(top_builddir)/panels/info/libinfo.la \ $(top_builddir)/panels/keyboard/libkeyboard.la \ $(top_builddir)/panels/mouse/libmouse-properties.la \ $(top_builddir)/panels/notifications/libnotifications.la \ - $(top_builddir)/panels/online-accounts/libonline-accounts.la \ $(top_builddir)/panels/power/libpower.la \ $(top_builddir)/panels/privacy/libprivacy.la \ $(top_builddir)/panels/region/libregion.la \ @@ -108,6 +106,14 @@ if BUILD_BLUETOOTH gnome_control_center_LDADD += $(top_builddir)/panels/bluetooth/libbluetooth.la endif +if BUILD_COLOR +gnome_control_center_LDADD += $(top_builddir)/panels/color/libcolor.la +endif + +if BUILD_ONLINE_ACCOUNTS +gnome_control_center_LDADD += $(top_builddir)/panels/online-accounts/libonline-accounts.la +endif + gnome_control_center_alt_LDADD = \ $(gnome_control_center_LDADD) \ alt/libshell_alt.la diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c index 20ebb85..9104b45 100644 --- a/shell/cc-panel-loader.c +++ b/shell/cc-panel-loader.c @@ -33,7 +33,9 @@ extern GType cc_background_panel_get_type (void); #ifdef BUILD_BLUETOOTH extern GType cc_bluetooth_panel_get_type (void); #endif /* BUILD_BLUETOOTH */ +#ifdef BUILD_COLOR extern GType cc_color_panel_get_type (void); +#endif /* BUILD_COLOR */ extern GType cc_date_time_panel_get_type (void); extern GType cc_display_panel_get_type (void); extern GType cc_info_panel_get_type (void); @@ -43,7 +45,9 @@ extern GType cc_mouse_panel_get_type (void); extern GType cc_network_panel_get_type (void); #endif /* BUILD_NETWORK */ extern GType cc_notifications_panel_get_type (void); +#ifdef BUILD_ONLINE_ACCOUNTS extern GType cc_goa_panel_get_type (void); +#endif /* BUILD_ONLINE_ACCOUNTS */ extern GType cc_power_panel_get_type (void); extern GType cc_printers_panel_get_type (void); extern GType cc_privacy_panel_get_type (void); @@ -75,7 +79,9 @@ static struct { #ifdef BUILD_BLUETOOTH PANEL_TYPE("bluetooth", cc_bluetooth_panel_get_type ), #endif +#ifdef BUILD_COLOR PANEL_TYPE("color", cc_color_panel_get_type ), +#endif PANEL_TYPE("datetime", cc_date_time_panel_get_type ), PANEL_TYPE("display", cc_display_panel_get_type ), PANEL_TYPE("info", cc_info_panel_get_type ), @@ -85,7 +91,9 @@ static struct { PANEL_TYPE("network", cc_network_panel_get_type ), #endif PANEL_TYPE("notifications", cc_notifications_panel_get_type), +#ifdef BUILD_ONLINE_ACCOUNTS PANEL_TYPE("online-accounts", cc_goa_panel_get_type ), +#endif PANEL_TYPE("power", cc_power_panel_get_type ), PANEL_TYPE("printers", cc_printers_panel_get_type ), PANEL_TYPE("privacy", cc_privacy_panel_get_type ), -- 2.10.2