summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2023-10-31 11:10:56 -0300
committerMax Krummenacher <max.krummenacher@toradex.com>2023-11-29 17:09:09 +0100
commit9dc0951458a115a268f57a3bfd85b71256c12d4d (patch)
tree6e40acaf22a37c57fb101853404fb0c982947f90
parent5d57838ef15bcd0b9497c57eeda7f40ca7bfaf59 (diff)
gpicview: allow building without xwayland
The recipe already patches the code tree to no longer call into gdk (remove-gdk-x11.patch) which does not work in wayland/xwayland. Thus the dependency on X11 headers is gone. Remove additionally checking for them in the configure script. This allows to build gpicview for weston without having xwayland enabled. Squash the changes into the existing remove-gdk-x11.patch and change the file name and commit description accordingly. Add missing upstream status to patch Related-to: ELB-5451 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit 6b65323381ffd8d25d040b658dac26e7e781c967)
-rw-r--r--recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch276
-rw-r--r--recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch136
-rw-r--r--recipes-graphics/gpicview/gpicview_0.2.5.bb2
3 files changed, 277 insertions, 137 deletions
diff --git a/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch b/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch
new file mode 100644
index 0000000..8cf74c1
--- /dev/null
+++ b/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch
@@ -0,0 +1,276 @@
+From aa2f81a3e78e7da505bdab465eacce9b37b035e6 Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.krummenacher@toradex.com>
+Date: Mon, 6 Nov 2023 10:43:46 +0000
+Subject: [PATCH] gpicview: allow to build for gtk/wayland
+
+For wayland gdk/gdkx.h does not work, even with xwayland.
+Remove the more elaborate gf_display_get_workarea function and use the
+existing fallback.
+With the removal of gdk from the code also remove the dependency
+check on x11 from configure.
+
+Upstream-Status: Inappropriate [Toradex specific]
+Upstream targets X11. Removing the use of gdk would remove
+functionaliy.
+
+Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
+---
+ Makefile.in | 2 -
+ configure.ac | 4 --
+ data/Makefile.in | 2 -
+ src/Makefile.am | 5 +-
+ src/Makefile.in | 7 +--
+ src/working-area.c | 123 ++-------------------------------------------
+ 6 files changed, 6 insertions(+), 137 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 6ecf74a..cad90b7 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -317,8 +317,6 @@ SHELL = @SHELL@
+ STRIP = @STRIP@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+-X11_CFLAGS = @X11_CFLAGS@
+-X11_LIBS = @X11_LIBS@
+ XGETTEXT = @XGETTEXT@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+diff --git a/configure.ac b/configure.ac
+index 2fb2469..1591584 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -56,15 +56,11 @@ AC_SUBST(GTK_LIBS)
+
+ pkg_modules="x11"
+
+-PKG_CHECK_MODULES(X11, [$pkg_modules])
+ AC_CHECK_LIB(jpeg, jpeg_start_decompress, [],
+ [AC_MSG_ERROR([libjpeg not found])], -lm)
+ AC_CHECK_HEADER(jpeglib.h, , [AC_MSG_ERROR([libjpeg not found])])
+ LIBJPEG='-ljpeg'
+
+-AC_SUBST(X11_CFLAGS)
+-AC_SUBST(X11_LIBS)
+-
+ # Generate po/LINGUAS on the fly rather than relying on translators
+ # to maintain it manually. This also overcome the problem that Transifex
+ # cannot add a language to po/LINGUAS if a new po file is submitted.
+diff --git a/data/Makefile.in b/data/Makefile.in
+index c8c142b..ea2e4ff 100644
+--- a/data/Makefile.in
++++ b/data/Makefile.in
+@@ -234,8 +234,6 @@ SHELL = @SHELL@
+ STRIP = @STRIP@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+-X11_CFLAGS = @X11_CFLAGS@
+-X11_LIBS = @X11_LIBS@
+ XGETTEXT = @XGETTEXT@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 44ecb19..6c7a683 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -2,7 +2,6 @@
+
+ # set the include path found by configure
+ gpicview_CPPFLAGS = $(all_includes) \
+- $(X11_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(ADDITIONAL_FLAGS) \
+ -I$(top_srcdir) \
+@@ -27,7 +26,7 @@ gpicview_SOURCES = \
+
+ # the library search path.
+ # use -nodefaultlibs to prevent linking libstdc++
+-gpicview_LDADD = $(X11_LIBS) $(GTK_LIBS) -lm
++gpicview_LDADD = $(GTK_LIBS) -lm
+
+ noinst_HEADERS = \
+ glib-mem.h \
+@@ -44,6 +43,4 @@ noinst_HEADERS = \
+
+ noinst_PROGRAMS=xml-purge
+ xml_purge_SOURCES=xml-purge.c
+-xml_purge_CFLAGS=@X11_CFLAGS@
+-xml_purge_LDADD=@X11_LIBS@
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 24cfe1f..65fea48 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -271,8 +271,6 @@ SHELL = @SHELL@
+ STRIP = @STRIP@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+-X11_CFLAGS = @X11_CFLAGS@
+-X11_LIBS = @X11_LIBS@
+ XGETTEXT = @XGETTEXT@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+@@ -331,7 +329,6 @@ top_srcdir = @top_srcdir@
+
+ # set the include path found by configure
+ gpicview_CPPFLAGS = $(all_includes) \
+- $(X11_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(ADDITIONAL_FLAGS) \
+ -I$(top_srcdir) \
+@@ -356,7 +353,7 @@ gpicview_SOURCES = \
+
+ # the library search path.
+ # use -nodefaultlibs to prevent linking libstdc++
+-gpicview_LDADD = $(X11_LIBS) $(GTK_LIBS) -lm
++gpicview_LDADD = $(GTK_LIBS) -lm
+ noinst_HEADERS = \
+ glib-mem.h \
+ image-list.h \
+@@ -371,8 +368,6 @@ noinst_HEADERS = \
+ jhead.h
+
+ xml_purge_SOURCES = xml-purge.c
+-xml_purge_CFLAGS = @X11_CFLAGS@
+-xml_purge_LDADD = @X11_LIBS@
+ all: all-am
+
+ .SUFFIXES:
+diff --git a/src/working-area.c b/src/working-area.c
+index 86a1fa5..2fa9474 100644
+--- a/src/working-area.c
++++ b/src/working-area.c
+@@ -23,126 +23,11 @@
+ */
+
+ # include <gdk/gdk.h>
+-# include <gdk/gdkx.h>
+-# include <X11/Xlib.h>
+-# include <X11/Xutil.h>
+-# include <X11/Xatom.h>
+-
+-void get_working_area(GdkScreen* screen, GdkRectangle *rect);
+-
+-static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) {
+- Atom xa_desktops, xa_current, xa_workarea, xa_type;
+- Display *x_display;
+- Window x_root;
+- guint32 desktops = 0, current = 0;
+- gulong *workareas, len, fill;
+- guchar *data;
+- gint format;
+-
+- GdkDisplay *g_display;
+- Screen *x_screen;
+-
+- /* get the gdk display */
+- g_display = gdk_display_get_default();
+- if(!g_display)
+- return FALSE;
+-
+- /* get the x display from the gdk display */
+- x_display = gdk_x11_display_get_xdisplay(g_display);
+- if(!x_display)
+- return FALSE;
+-
+- /* get the x screen from the gdk screen */
+- x_screen = gdk_x11_screen_get_xscreen(g_screen);
+- if(!x_screen)
+- return FALSE;
+-
+- /* get the root window from the screen */
+- x_root = XRootWindowOfScreen(x_screen);
+-
+- /* find the _NET_NUMBER_OF_DESKTOPS atom */
+- xa_desktops = XInternAtom(x_display, "_NET_NUMBER_OF_DESKTOPS", True);
+- if(xa_desktops == None)
+- return FALSE;
+-
+- /* get the number of desktops */
+- if(XGetWindowProperty(x_display, x_root, xa_desktops, 0, 1, False,
+- XA_CARDINAL, &xa_type, &format, &len, &fill,
+- &data) != Success)
+- {
+- return FALSE;
+- }
+-
+- if(!data)
+- return FALSE;
+-
+- desktops = *(guint32 *)data;
+- XFree(data);
+-
+- /* find the _NET_CURRENT_DESKTOP atom */
+- xa_current = XInternAtom(x_display, "_NET_CURRENT_DESKTOP", True);
+- if(xa_current == None)
+- return FALSE;
+-
+- /* get the current desktop */
+- if(XGetWindowProperty(x_display, x_root, xa_current, 0, 1, False,
+- XA_CARDINAL, &xa_type, &format, &len, &fill,
+- &data) != Success)
+- {
+- return FALSE;
+- }
+-
+- if(!data)
+- return FALSE;
+-
+- current = *(guint32 *)data;
+- XFree(data);
+-
+- /* find the _NET_WORKAREA atom */
+- xa_workarea = XInternAtom(x_display, "_NET_WORKAREA", True);
+- if(xa_workarea == None)
+- return FALSE;
+-
+- if(XGetWindowProperty(x_display, x_root, xa_workarea, 0, (glong)(4 * 32),
+- False, AnyPropertyType, &xa_type, &format, &len,
+- &fill, &data) != Success)
+- {
+- return FALSE;
+- }
+-
+- /* make sure the type and format are good */
+- if(xa_type == None || format == 0)
+- return FALSE;
+-
+- /* make sure we don't have any leftovers */
+- if(fill)
+- return FALSE;
+-
+- /* make sure len divides evenly by 4 */
+- if(len % 4)
+- return FALSE;
+-
+- /* it's good, lets use it */
+- workareas = (gulong *)(guint32 *)data;
+-
+- rect->x = (guint32)workareas[current * 4];
+- rect->y = (guint32)workareas[current * 4 + 1];
+- rect->width = (guint32)workareas[current * 4 + 2];
+- rect->height = (guint32)workareas[current * 4 + 3];
+-
+- /* clean up our memory */
+- XFree(data);
+-
+- return TRUE;
+-}
+
+ void get_working_area(GdkScreen* screen, GdkRectangle *rect)
+ {
+- if( !gf_display_get_workarea(screen, rect) )
+- {
+- rect->x = 0;
+- rect->y = 0;
+- rect->width = gdk_screen_width();
+- rect->height = gdk_screen_height();
+- }
++ rect->x = 0;
++ rect->y = 0;
++ rect->width = gdk_screen_width();
++ rect->height = gdk_screen_height();
+ }
+--
+2.35.3
+
diff --git a/recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch b/recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch
deleted file mode 100644
index a1f97b3..0000000
--- a/recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-For xwayland gdk/gdkx.h does not work.
-Remove the more elaborate gf_display_get_workarea function and use only
-the fallback.
---- ./src/working-area.c.orig 2016-02-20 22:38:31.000000000 +0000
-+++ ./src/working-area.c 2020-01-07 13:37:47.023817524 +0000
-@@ -23,126 +23,11 @@
- */
-
- # include <gdk/gdk.h>
--# include <gdk/gdkx.h>
--# include <X11/Xlib.h>
--# include <X11/Xutil.h>
--# include <X11/Xatom.h>
--
--void get_working_area(GdkScreen* screen, GdkRectangle *rect);
--
--static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) {
-- Atom xa_desktops, xa_current, xa_workarea, xa_type;
-- Display *x_display;
-- Window x_root;
-- guint32 desktops = 0, current = 0;
-- gulong *workareas, len, fill;
-- guchar *data;
-- gint format;
--
-- GdkDisplay *g_display;
-- Screen *x_screen;
--
-- /* get the gdk display */
-- g_display = gdk_display_get_default();
-- if(!g_display)
-- return FALSE;
--
-- /* get the x display from the gdk display */
-- x_display = gdk_x11_display_get_xdisplay(g_display);
-- if(!x_display)
-- return FALSE;
--
-- /* get the x screen from the gdk screen */
-- x_screen = gdk_x11_screen_get_xscreen(g_screen);
-- if(!x_screen)
-- return FALSE;
--
-- /* get the root window from the screen */
-- x_root = XRootWindowOfScreen(x_screen);
--
-- /* find the _NET_NUMBER_OF_DESKTOPS atom */
-- xa_desktops = XInternAtom(x_display, "_NET_NUMBER_OF_DESKTOPS", True);
-- if(xa_desktops == None)
-- return FALSE;
--
-- /* get the number of desktops */
-- if(XGetWindowProperty(x_display, x_root, xa_desktops, 0, 1, False,
-- XA_CARDINAL, &xa_type, &format, &len, &fill,
-- &data) != Success)
-- {
-- return FALSE;
-- }
--
-- if(!data)
-- return FALSE;
--
-- desktops = *(guint32 *)data;
-- XFree(data);
--
-- /* find the _NET_CURRENT_DESKTOP atom */
-- xa_current = XInternAtom(x_display, "_NET_CURRENT_DESKTOP", True);
-- if(xa_current == None)
-- return FALSE;
--
-- /* get the current desktop */
-- if(XGetWindowProperty(x_display, x_root, xa_current, 0, 1, False,
-- XA_CARDINAL, &xa_type, &format, &len, &fill,
-- &data) != Success)
-- {
-- return FALSE;
-- }
--
-- if(!data)
-- return FALSE;
--
-- current = *(guint32 *)data;
-- XFree(data);
--
-- /* find the _NET_WORKAREA atom */
-- xa_workarea = XInternAtom(x_display, "_NET_WORKAREA", True);
-- if(xa_workarea == None)
-- return FALSE;
--
-- if(XGetWindowProperty(x_display, x_root, xa_workarea, 0, (glong)(4 * 32),
-- False, AnyPropertyType, &xa_type, &format, &len,
-- &fill, &data) != Success)
-- {
-- return FALSE;
-- }
--
-- /* make sure the type and format are good */
-- if(xa_type == None || format == 0)
-- return FALSE;
--
-- /* make sure we don't have any leftovers */
-- if(fill)
-- return FALSE;
--
-- /* make sure len divides evenly by 4 */
-- if(len % 4)
-- return FALSE;
--
-- /* it's good, lets use it */
-- workareas = (gulong *)(guint32 *)data;
--
-- rect->x = (guint32)workareas[current * 4];
-- rect->y = (guint32)workareas[current * 4 + 1];
-- rect->width = (guint32)workareas[current * 4 + 2];
-- rect->height = (guint32)workareas[current * 4 + 3];
--
-- /* clean up our memory */
-- XFree(data);
--
-- return TRUE;
--}
-
- void get_working_area(GdkScreen* screen, GdkRectangle *rect)
- {
-- if( !gf_display_get_workarea(screen, rect) )
-- {
-- rect->x = 0;
-- rect->y = 0;
-- rect->width = gdk_screen_width();
-- rect->height = gdk_screen_height();
-- }
-+ rect->x = 0;
-+ rect->y = 0;
-+ rect->width = gdk_screen_width();
-+ rect->height = gdk_screen_height();
- }
diff --git a/recipes-graphics/gpicview/gpicview_0.2.5.bb b/recipes-graphics/gpicview/gpicview_0.2.5.bb
index 6e1020b..170db77 100644
--- a/recipes-graphics/gpicview/gpicview_0.2.5.bb
+++ b/recipes-graphics/gpicview/gpicview_0.2.5.bb
@@ -10,7 +10,7 @@ RDEPENDS:${PN} = "adwaita-icon-theme"
SRC_URI = " \
${SOURCEFORGE_MIRROR}/lxde/${P}.tar.xz \
- file://remove-gdk-x11.patch \
+ file://0001-gpicview-allow-to-build-for-gtk-wayland.patch \
"
SRC_URI[md5sum] = "26be9b0c5a234f1afe7d83d02a4a33f4"
SRC_URI[sha256sum] = "38466058e53702450e5899193c4b264339959b563dd5cd81f6f690de32d82942"