commit:     13f01b0847c7b169fbb664213a2854888f14acd9
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Mon May  8 08:54:52 2023 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Mon May  8 09:11:20 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=13f01b08

mate-base/mate-control-center: Migrate to ayatana

Closes: https://bugs.gentoo.org/905176
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 ...e-control-center-1.26.0-ayatana-detection.patch | 435 +++++++++++++++++++++
 .../mate-control-center-1.26.0-r2.ebuild           |  75 ++++
 2 files changed, 510 insertions(+)

diff --git 
a/mate-base/mate-control-center/files/mate-control-center-1.26.0-ayatana-detection.patch
 
b/mate-base/mate-control-center/files/mate-control-center-1.26.0-ayatana-detection.patch
new file mode 100644
index 000000000000..c8253b7fbf7f
--- /dev/null
+++ 
b/mate-base/mate-control-center/files/mate-control-center-1.26.0-ayatana-detection.patch
@@ -0,0 +1,435 @@
+--- mate-control-center-1.26.0.old/configure.ac        2023-04-28 
16:12:05.281295458 +0200
++++ mate-control-center-1.26.0/configure.ac    2023-04-28 16:48:44.374329792 
+0200
+@@ -84,30 +84,50 @@
+ 
+ AM_CONDITIONAL(HAVE_TYPING_BREAK, test "x$TYPING_BREAK" = xtyping-break)
+ 
+-dnl app indicator
+-APPINDICATOR_PKG=appindicator3-0.1
++dnl app indicator (Ubuntu and Ayatana implementation)
++AYATANA_APPINDICATOR_PKG=ayatana-appindicator3-0.1
++UBUNTU_APPINDICATOR_PKG=appindicator3-0.1
++
++PKG_CHECK_EXISTS($AYATANA_APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED,
++                [have_appindicator_ayatana="yes"],
++                [have_appindicator_ayatana="no"])
++PKG_CHECK_EXISTS($UBUNTU_APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED,
++                [have_appindicator_ubuntu="yes"],
++                [have_appindicator_ubuntu="no"])
+ 
+ AC_ARG_ENABLE(appindicator,
+                         
AS_HELP_STRING([--enable-appindicator[=@<:@no/auto/yes@:>@]],[Build support for 
application indicators ]),
+                         [enable_appindicator=$enableval],
+                         [enable_appindicator="auto"])
+ 
+-if test x$enable_appindicator = xauto ; then
+-        PKG_CHECK_EXISTS([$APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED],
+-                         enable_appindicator="yes",
+-                         enable_appindicator="no")
++if  test "x$enable_appindicator" == "xauto" &&
++   (test "x$have_appindicator_ayatana" == "xyes" ||
++    test "x$have_appindicator_ubuntu" == "xyes"); then
++       AC_MSG_NOTICE([Enabling AppIndicator support (as 
--enable-appindicator=auto was used).])
++       enable_appindicator="yes"
+ fi
+ 
+-if test x$enable_appindicator = xyes ; then
+-        PKG_CHECK_EXISTS([$APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED],,
+-                         AC_MSG_ERROR([appindicator-0.1 is not installed]))
+-        PKG_CHECK_MODULES(APP_INDICATOR,
+-                        $APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED)
+-        AC_SUBST(APP_INDICATOR_CFLAGS)
+-        AC_SUBST(APP_INDICATOR_LIBS)
+-        AC_DEFINE(HAVE_APP_INDICATOR, 1, [Have AppIndicator])
++if test "x$enable_appindicator" == "xyes"; then
++       if test "x$have_appindicator_ayatana" == "xyes"; then
++               AC_MSG_NOTICE([Buidling against Ayatana AppIndicator.])
++               PKG_CHECK_MODULES(AYATANA_APPINDICATOR,
++                                 [$AYATANA_APPINDICATOR_PKG >= 
$APPINDICATOR_REQUIRED],
++                                 [AC_DEFINE(HAVE_AYATANA_APPINDICATOR, 1, 
[Have Ayatana AppIndicator])])
++               AC_SUBST(AYATANA_APPINDICATOR_CFLAGS)
++               AC_SUBST(AYATANA_APPINDICATOR_LIBS)
++       elif test "x$have_appindicator_ubuntu" == "xyes"; then
++               AC_MSG_NOTICE([Buidling against Ubuntu AppIndicator.])
++               PKG_CHECK_MODULES(UBUNTU_APPINDICATOR,
++                                 [$UBUNTU_APPINDICATOR_PKG >= 
$APPINDICATOR_REQUIRED],
++                                 [AC_DEFINE(HAVE_UBUNTU_APPINDICATOR, 1, 
[Have Ubuntu AppIndicator])])
++               AC_SUBST(UBUNTU_APPINDICATOR_CFLAGS)
++               AC_SUBST(UBUNTU_APPINDICATOR_LIBS)
++       else
++               AC_MSG_ERROR([Neither Ayatana AppIndicator nor Ubuntu 
AppIndicator library is present, but you enabled AppIndicator support.])
++       fi
+ fi
+-AM_CONDITIONAL(HAVE_APP_INDICATOR, test x"$enable_appindicator" = xyes)
++AM_CONDITIONAL(HAVE_AYATANA_APPINDICATOR, test x"$have_appindicator_ayatana" 
= xyes)
++AM_CONDITIONAL(HAVE_UBUNTU_APPINDICATOR, test x"$have_appindicator_ubuntu" = 
xyes)
+ 
+ dnl keyboard-properties-capplet
+ savecppflags=$CPPFLAGS
+@@ -322,7 +342,10 @@
+         Warning flags:             ${WARN_CFLAGS}
+         Linker flags:              ${LDFLAGS}
+ 
+-        Appindicator:              ${enable_appindicator}
++        AppIndicator enabled:              ${enable_appindicator}
++        Ayatana AppIndicator (preferred)   ${have_appindicator_ayatana}
++        Ubuntu AppIndicator (legacy)       ${have_appindicator_ubuntu}
++
+         Libmate-slab:              ${have_libmateslab}
+         Accountsservice:           ${have_accountsservice}
+         Native Language support:   ${USE_NLS}
+--- mate-control-center-1.26.0.old/typing-break/drwright.c     2023-04-28 
16:12:05.282295452 +0200
++++ mate-control-center-1.26.0/typing-break/drwright.c 2023-04-28 
16:27:03.082651572 +0200
+@@ -30,9 +30,11 @@
+ #include <gtk/gtk.h>
+ #include <gio/gio.h>
+ 
+-#ifdef HAVE_APP_INDICATOR
+-#include <libappindicator/app-indicator.h>
+-#endif /* HAVE_APP_INDICATOR */
++#if defined(HAVE_AYATANA_APPINDICATOR)
++# include <libayatana-appindicator/app-indicator.h>
++#elif defined(HAVE_UBUNTU_APPINDICATOR)
++# include <libappindicator/app-indicator.h>
++#endif
+ 
+ #define MATE_DESKTOP_USE_UNSTABLE_API
+ #include <libmate-desktop/mate-desktop-utils.h>
+@@ -43,11 +45,11 @@
+ #include "drw-utils.h"
+ #include "drw-timer.h"
+ 
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+ #define BLINK_TIMEOUT        200
+ #define BLINK_TIMEOUT_MIN    120
+ #define BLINK_TIMEOUT_FACTOR 100
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+ typedef enum {
+       STATE_START,
+@@ -59,10 +61,10 @@
+       STATE_BREAK_DONE
+ } DrwState;
+ 
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+ #define TYPING_MONITOR_ACTIVE_ICON "bar-green"
+ #define TYPING_MONITOR_ATTENTION_ICON "bar-red"
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+ struct _DrWright {
+       /* Widgets. */
+@@ -88,7 +90,7 @@
+       gboolean         enabled;
+ 
+       guint            clock_timeout_id;
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+       AppIndicator    *indicator;
+ #else
+       guint            blink_timeout_id;
+@@ -102,7 +104,7 @@
+       cairo_surface_t *green_bar;
+       cairo_surface_t *disabled_bar;
+       GdkPixbuf       *composite_bar;
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+       GtkWidget      *warn_dialog;
+ };
+@@ -124,11 +126,11 @@
+                                               DrWright       *dr);
+ static void     popup_about_cb                 (GtkAction      *action,
+                                               DrWright       *dr);
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+ static void     init_app_indicator             (DrWright       *dr);
+ #else
+ static void     init_tray_icon                 (DrWright       *dr);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ static GList *  create_secondary_break_windows (void);
+ 
+ static const GtkActionEntry actions[] = {
+@@ -147,7 +149,7 @@
+       dr->break_time = 10;
+ }
+ 
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+ static void
+ update_app_indicator (DrWright *dr)
+ {
+@@ -304,32 +306,32 @@
+ 
+       return FALSE;
+ }
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+ static void
+ start_blinking (DrWright *dr)
+ {
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+       if (!dr->blink_timeout_id) {
+               dr->blink_on = TRUE;
+               blink_timeout_cb (dr);
+       }
+ 
+       /*gtk_widget_show (GTK_WIDGET (dr->icon));*/
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ }
+ 
+ static void
+ stop_blinking (DrWright *dr)
+ {
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+       if (dr->blink_timeout_id) {
+               g_source_remove (dr->blink_timeout_id);
+               dr->blink_timeout_id = 0;
+       }
+ 
+       /*gtk_widget_hide (GTK_WIDGET (dr->icon));*/
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ }
+ 
+ static gboolean
+@@ -397,9 +399,9 @@
+                       dr->break_window = NULL;
+               }
+ 
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+               set_status_icon (dr->icon, dr->neutral_bar);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+               dr->save_last_time = 0;
+ 
+@@ -437,9 +439,9 @@
+               }
+ 
+               stop_blinking (dr);
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+               set_status_icon (dr->icon, dr->red_bar);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+               drw_timer_start (dr->timer);
+ 
+@@ -480,9 +482,9 @@
+ 
+       case STATE_BREAK_DONE_SETUP:
+               stop_blinking (dr);
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+               set_status_icon (dr->icon, dr->green_bar);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+               dr->state = STATE_BREAK_DONE;
+               break;
+@@ -498,11 +500,11 @@
+ 
+       dr->last_elapsed_time = elapsed_time;
+ 
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+       update_app_indicator (dr);
+ #else
+       update_icon (dr);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+       return TRUE;
+ }
+@@ -512,45 +514,45 @@
+ {
+       gint       min;
+       gchar     *str;
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+       GtkWidget *item;
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+       if (!dr->enabled) {
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+               app_indicator_set_status (dr->indicator,
+                                         APP_INDICATOR_STATUS_PASSIVE);
+ #else
+               gtk_status_icon_set_tooltip_text (dr->icon,
+                                                 _("Disabled"));
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+               return TRUE;
+       }
+ 
+       min = get_time_left (dr);
+ 
+       if (min >= 1) {
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+               str = g_strdup_printf (_("Take a break now (next in %dm)"), 
min);
+ #else
+               str = g_strdup_printf (ngettext("%d minute until the next 
break",
+                                               "%d minutes until the next 
break",
+                                               min), min);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+       } else {
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+               str = g_strdup_printf (_("Take a break now (next in less than 
one minute)"));
+ #else
+               str = g_strdup_printf (_("Less than one minute until the next 
break"));
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+       }
+ 
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+       item = gtk_ui_manager_get_widget (dr->ui_manager, "/Pop/TakeABreak");
+       gtk_menu_item_set_label (GTK_MENU_ITEM (item), str);
+ #else
+       gtk_status_icon_set_tooltip_text (dr->icon, str);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+       g_free (str);
+ 
+@@ -665,7 +667,7 @@
+                              NULL);
+ }
+ 
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+ static void
+ popup_menu_cb (GtkWidget *widget,
+              guint      button,
+@@ -684,7 +686,7 @@
+                       0,
+                       gtk_get_current_event_time ());
+ }
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+ static void
+ break_window_done_cb (GtkWidget *window,
+@@ -724,11 +726,11 @@
+       drw_timer_start (dr->timer);
+       maybe_change_state (dr);
+       update_status (dr);
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+       update_app_indicator (dr);
+ #else
+       update_icon (dr);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ }
+ 
+ static void
+@@ -745,7 +747,7 @@
+       dr->secondary_break_windows = NULL;
+ }
+ 
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+ static void
+ init_app_indicator (DrWright *dr)
+ {
+@@ -792,7 +794,7 @@
+                         G_CALLBACK (popup_menu_cb),
+                         dr);
+ }
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+ static GList *
+ create_secondary_break_windows (void)
+@@ -891,7 +893,7 @@
+                         G_CALLBACK (activity_detected_cb),
+                         dr);
+ 
+-#ifdef HAVE_APP_INDICATOR
++#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
+       init_app_indicator (dr);
+ #else
+       dr->neutral_bar = cairo_image_surface_create_from_png (IMAGEDIR 
"/bar.png");
+@@ -900,7 +902,7 @@
+       dr->disabled_bar = cairo_image_surface_create_from_png (IMAGEDIR 
"/bar-disabled.png");
+ 
+       init_tray_icon (dr);
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+       g_timeout_add_seconds (12,
+                              (GSourceFunc) update_status,
+--- mate-control-center-1.26.0.old/typing-break/Makefile.am    2023-04-28 
16:12:05.283295447 +0200
++++ mate-control-center-1.26.0/typing-break/Makefile.am        2023-04-28 
16:30:45.343491923 +0200
+@@ -32,9 +32,14 @@
+   mate_typing_monitor_LDADD += @LIBCANBERRA_GTK_LIBS@
+ endif
+ 
+-if HAVE_APP_INDICATOR
+-  mate_typing_monitor_CFLAGS += -DHAVE_APP_INDICATOR @APP_INDICATOR_CFLAGS@
+-  mate_typing_monitor_LDADD += @APP_INDICATOR_LIBS@
++if HAVE_AYATANA_APPINDICATOR
++  mate_typing_monitor_CFLAGS += -DHAVE_AYATANA_APPINDICATOR 
@AYATANA_APPINDICATOR_CFLAGS@
++  mate_typing_monitor_LDADD += @AYATANA_APPINDICATOR_LIBS@
++endif
++
++if HAVE_UBUNTU_APPINDICATOR
++  mate_typing_monitor_CFLAGS += -DHAVE_UBUNTU_APPINDICATOR 
@UBUNTU_APPINDICATOR_CFLAGS@
++  mate_typing_monitor_LDADD += @UBUNTU_APPINDICATOR_LIBS@
+ endif
+ 
+ imagedir = $(pkgdatadir)/pixmaps
+--- mate-control-center-1.26.0.old/typing-break/main.c 2023-04-28 
16:12:05.282295452 +0200
++++ mate-control-center-1.26.0/typing-break/main.c     2023-04-28 
16:32:09.781067404 +0200
+@@ -31,7 +31,7 @@
+ 
+ gboolean debug = FALSE;
+ 
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+ static gboolean
+ have_tray (void)
+ {
+@@ -50,7 +50,7 @@
+               return FALSE;
+       }
+ }
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+ int
+ main (int argc, char *argv[])
+@@ -98,7 +98,7 @@
+               return 0;
+       }
+ 
+-#ifndef HAVE_APP_INDICATOR
++#if !defined(HAVE_AYATANA_APPINDICATOR) && !defined(HAVE_UBUNTU_APPINDICATOR)
+       if (!no_check && !have_tray ()) {
+               GtkWidget *dialog;
+ 
+@@ -116,7 +116,7 @@
+ 
+               gtk_widget_destroy (dialog);
+       }
+-#endif /* HAVE_APP_INDICATOR */
++#endif
+ 
+       drwright_new ();
+ 

diff --git a/mate-base/mate-control-center/mate-control-center-1.26.0-r2.ebuild 
b/mate-base/mate-control-center/mate-control-center-1.26.0-r2.ebuild
new file mode 100644
index 000000000000..cdda1c51478d
--- /dev/null
+++ b/mate-base/mate-control-center/mate-control-center-1.26.0-r2.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+MATE_LA_PUNT="yes"
+
+inherit mate
+
+if [[ ${PV} != 9999 ]]; then
+       KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86"
+fi
+
+DESCRIPTION="The MATE Desktop configuration tool"
+LICENSE="FDL-1.1+ GPL-2+ LGPL-2+ LGPL-2.1+ HPND"
+SLOT="0"
+
+IUSE="accountsservice appindicator debug nls"
+
+COMMON_DEPEND="
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       >=dev-libs/glib-2.50:2
+       dev-libs/libxml2:2
+       >=gnome-base/dconf-0.13.4
+       >=gnome-base/librsvg-2.0:2
+       >=mate-base/libmatekbd-1.17.0
+       >=mate-base/mate-desktop-1.25.0
+       >=mate-base/caja-1.20.0
+       >=mate-base/mate-menus-1.21.0
+       >=media-libs/fontconfig-1:1.0
+       media-libs/freetype:2
+       media-libs/libcanberra:0[gtk3]
+       sys-auth/polkit[introspection]
+       x11-apps/xmodmap
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       >=x11-libs/gtk+-3.22:3
+       x11-libs/libX11
+       x11-libs/libXScrnSaver
+       x11-libs/libXcursor
+       x11-libs/libXext
+       >=x11-libs/libXi-1.5
+       x11-libs/libXrandr
+       x11-libs/libXrender
+       >=x11-libs/libxklavier-4
+       x11-libs/pango
+       >=x11-wm/marco-1.17.0:=
+       accountsservice? ( sys-apps/accountsservice )
+       appindicator? ( dev-libs/libayatana-appindicator )
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+BDEPEND="${COMMON_DEPEND}
+       app-text/yelp-tools
+       dev-libs/libxml2
+       dev-util/desktop-file-utils
+       dev-util/glib-utils
+       >=sys-devel/gettext-0.19.8
+       x11-base/xorg-proto
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       # https://github.com/mate-desktop/mate-control-center/issues/701
+       "${FILESDIR}"/${PN}-1.26.0-ayatana-detection.patch
+)
+
+src_configure() {
+       mate_src_configure \
+               --disable-update-mimedb \
+               $(use_enable appindicator) \
+               $(use_enable nls) \
+               $(use_enable debug)
+}

Reply via email to