[meta-oe][PATCH 032/109] libgnt: upgrade 2.14.1 -> 2.14.3

Khem Raj <[email protected]>
Newsgroups org.openembedded.lists.openembedded-devel
Message-ID <[email protected]>
Point release with bug fixes and minor improvements.

Recipe-side changes: patches / files moved to the new version directory.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <[email protected]>
---
 ...son-import-changes-from-3.0.-version.patch | 215 ------------------
 ...e-pkg-config-to-find-ncursesw-panelw.patch | 111 +++++++++
 .../{libgnt_2.14.1.bb => libgnt_2.14.3.bb}    |   6 +-
 3 files changed, 114 insertions(+), 218 deletions(-)
 delete mode 100644 meta-oe/recipes-support/pidgin/libgnt/0001-meson-import-changes-from-3.0.-version.patch
 create mode 100644 meta-oe/recipes-support/pidgin/libgnt/0001-meson-use-pkg-config-to-find-ncursesw-panelw.patch
 rename meta-oe/recipes-support/pidgin/{libgnt_2.14.1.bb => libgnt_2.14.3.bb} (74%)

diff --git a/meta-oe/recipes-support/pidgin/libgnt/0001-meson-import-changes-from-3.0.-version.patch b/meta-oe/recipes-support/pidgin/libgnt/0001-meson-import-changes-from-3.0.-version.patch
deleted file mode 100644
index 8bb60b5557..0000000000
--- a/meta-oe/recipes-support/pidgin/libgnt/0001-meson-import-changes-from-3.0.-version.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From 51d66c1c257f7487497f562033ac32ac75f648cb Mon Sep 17 00:00:00 2001
-From: Martin Jansa <[email protected]>
-Date: Mon, 8 Feb 2021 12:27:51 +0100
-Subject: [PATCH] meson: import changes from 3.0.* version
-
-* we need to use the meson option to disable introspection and docs
-
-Upstream-Status: Backport
-Signed-off-by: Martin Jansa <[email protected]>
----
- meson.build       | 139 ++++++++++++++++++++++++++++------------------
- meson_options.txt |   5 ++
- 2 files changed, 90 insertions(+), 54 deletions(-)
- create mode 100644 meson_options.txt
-
-diff --git a/meson.build b/meson.build
-index 1084c82..ed040b4 100644
---- a/meson.build
-+++ b/meson.build
-@@ -53,9 +53,9 @@ compiler = meson.get_compiler('c')
- pkgconfig = import('pkgconfig')
- 
- # #######################################################################
--# # Check for GLib 2.16
-+# # Check for GLib 2.44
- # #######################################################################
--glib = dependency('glib-2.0', version : '>= 2.16.0')
-+glib = dependency('glib-2.0', version : '>= 2.44.0')
- gobject = dependency('gobject-2.0')
- gmodule = dependency('gmodule-2.0')
- gnome = import('gnome')
-@@ -63,74 +63,88 @@ gnome = import('gnome')
- #######################################################################
- # Check for LibXML2
- #######################################################################
--libxml = dependency('libxml-2.0', version : '>= 2.6.0', required : false)
--gnt_config.set('NO_LIBXML', not libxml.found())
-+libxml = dependency('libxml-2.0', version : '>= 2.6.0')
- 
- #######################################################################
- # Check for ncurses and other things used by it
- #######################################################################
- ncurses_available = true
--ncurses_inc = []
--# The order of this list is important to the condition that follows.
--ncurses_libs = [
--	compiler.find_library('ncursesw', required : false),
--	compiler.find_library('panelw', required : false),
--	compiler.find_library('tinfow', required : false),
--]
--if not ncurses_libs[0].found() or not ncurses_libs[1].found()
--	ncurses_available = false
--endif
-+ncurses_widechar = true
-+ncurses_header = 'ncurses.h'
-+# Some distros put the headers in ncursesw/, some don't. These are ordered to
-+# pick the last available as most-specific version.
-+ncursesw_header_paths = ['', 'ncursesw/']
- 
--if host_machine.system() == 'windows'
--	# FIXME: $host ?
--	ncurses_sys_prefix = '/usr/$host/sys-root/mingw'
-+ncurses = [
-+	dependency('ncursesw', required : false),
-+	dependency('panelw', required : false),
-+]
-+if ncurses[0].found() and ncurses[1].found()
-+	foreach location : ncursesw_header_paths
-+		f = location + 'ncurses.h'
-+		if compiler.has_header_symbol(f, 'get_wch',
-+		    prefix : '#define _XOPEN_SOURCE_EXTENDED')
-+			ncurses_header = f
-+		endif
-+	endforeach
- else
--	ncurses_sys_prefix = '/usr'
--endif
--
--ncurses_sys_dirs = [ncurses_sys_prefix + '/include/ncursesw',
--                    ncurses_sys_prefix + '/include']
--
--if ncurses_available
--	# Some distros put the headers in ncursesw/, some don't
--	found_ncurses_h = false
--	foreach location : ncurses_sys_dirs
--		f = location + '/ncurses.h'
--		if not found_ncurses_h
-+	ncurses_available = false
-+	ncurses_inc = []
-+	ncurses_libs = [
-+		compiler.find_library('ncursesw', required : false),
-+		compiler.find_library('panelw', required : false)
-+	]
-+	if ncurses_libs[0].found() and ncurses_libs[1].found()
-+		foreach location : ncursesw_header_paths
-+			f = location + 'ncurses.h'
- 			if compiler.has_header_symbol(f, 'get_wch',
- 			    prefix : '#define _XOPEN_SOURCE_EXTENDED')
--				if location != '.'
--					ncurses_inc += [include_directories(location)]
--				endif
--				found_ncurses_h = true
-+				ncurses_available = true
-+				ncurses_header = f
- 			endif
--		endif
--	endforeach
-+		endforeach
- 
--	if not found_ncurses_h
--		ncurses_inc = []
--		ncurses_libs = []
--		ncurses_available = false
-+		if ncurses_available
-+			ncurses = declare_dependency(
-+			    include_directories : ncurses_inc,
-+			    dependencies : ncurses_libs
-+			)
-+		endif
- 	endif
--else
-+endif
-+
-+if not ncurses_available
- 	# ncursesw was not found. Look for plain old ncurses
--	# The order of this list is important to the condition that follows.
--	ncurses_libs = [
--		compiler.find_library('ncurses', required : false),
--		compiler.find_library('panel', required : false),
--		compiler.find_library('tinfo', required : false),
-+	ncurses = [
-+		dependency('ncurses', required : false),
-+		dependency('panel', required : false),
- 	]
--	ncurses_available = ncurses_libs[0].found() and ncurses_libs[1].found()
--	gnt_config.set('NO_WIDECHAR', true)
-+	if ncurses[0].found() and ncurses_libs[1].found()
-+		ncurses_available = true
-+	else
-+		ncurses_libs = [
-+			compiler.find_library('ncurses', required : false),
-+			compiler.find_library('panel', required : false),
-+		]
-+		ncurses_available = ncurses_libs[0].found() and ncurses_libs[1].found()
-+		ncurses = declare_dependency(dependencies : ncurses_libs)
-+	endif
-+	ncurses_widechar = false
- endif
-+
-+if not ncurses_available and host_machine.system() == 'windows'
-+	# Try pdcurses too.
-+	ncurses_header = 'curses.h'
-+	ncurses_libs = compiler.find_library('pdcurses', required : false)
-+	ncurses_available = compiler.has_header(ncurses_header) and ncurses_libs.found()
-+	ncurses = declare_dependency(dependencies : ncurses_libs)
-+endif
-+
- if not ncurses_available
- 	error('ncurses could not be found!')
- endif
--
--ncurses = declare_dependency(
--    include_directories : ncurses_inc,
--    dependencies : ncurses_libs
--)
-+gnt_config.set('NCURSES_HEADER', ncurses_header)
-+gnt_config.set10('NCURSES_WIDECHAR', ncurses_widechar)
- 
- libgnt_SOURCES = [
- 	'gntwidget.c',
-@@ -191,7 +205,10 @@ libgnt_headers = [
- ]
- 
- # Check for Python headers
--python_dep = dependency('python2', required : false)
-+python_dep = dependency('python3-embed', required: false)
-+if not python_dep.found()
-+	python_dep = dependency('python3', required : false)
-+endif
- gnt_config.set('USE_PYTHON', python_dep.found())
- 
- configure_file(output : 'gntconfig.h',
-@@ -233,6 +250,20 @@ pkgconfig.generate(
-     variables : ['plugindir = ${libdir}/gnt'],
-     )
- 
-+if get_option('introspection')
-+	libgnt_gir = gnome.generate_gir(libgnt,
-+	    sources : libgnt_headers + [gnt_h],
-+	    includes : 'GObject-2.0',
-+	    namespace : 'Gnt',
-+	    symbol_prefix : 'gnt',
-+	    identifier_prefix : 'Gnt',
-+	    nsversion : '@0@.@1@'.format(gnt_major_version, gnt_minor_version),
-+	    install : true,
-+	    extra_args : ['-DGNT_COMPILATION', '--quiet'])
-+endif
-+
- subdir('wms')
- subdir('test')
--subdir('doc')
-+if get_option('doc')
-+	subdir('doc')
-+endif
-diff --git a/meson_options.txt b/meson_options.txt
-new file mode 100644
-index 0000000..f2414e2
---- /dev/null
-+++ b/meson_options.txt
-@@ -0,0 +1,5 @@
-+option('doc', type : 'boolean', value : true, yield : true,
-+       description : 'build documentation with gtk-doc')
-+
-+option('introspection', type : 'boolean', value : true, yield : true,
-+       description : 'build introspection data')
diff --git a/meta-oe/recipes-support/pidgin/libgnt/0001-meson-use-pkg-config-to-find-ncursesw-panelw.patch b/meta-oe/recipes-support/pidgin/libgnt/0001-meson-use-pkg-config-to-find-ncursesw-panelw.patch
new file mode 100644
index 0000000000..9d2d2ab77c
--- /dev/null
+++ b/meta-oe/recipes-support/pidgin/libgnt/0001-meson-use-pkg-config-to-find-ncursesw-panelw.patch
@@ -0,0 +1,111 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Khem Raj <[email protected]>
+Date: Tue, 4 Aug 2026 00:00:00 +0000
+Subject: [PATCH] meson: use pkg-config to find ncursesw/panelw
+
+The hand-rolled ncurses detection hardcodes the absolute host paths
+/usr/include/ncursesw and /usr/include when probing for ncurses.h and adds
+the matching -I to the compile line.  When cross-compiling this leaks the
+build host's ncurses headers into the target compile:
+
+  gntwm.c:170:21: error: incomplete definition of type 'PANEL'
+
+because the host's panel.h keeps PANEL opaque while the target sysroot's
+does not.
+
+Use pkg-config (ncursesw/panelw, falling back to ncurses/panel) so meson
+takes the include directories from the target sysroot.  libgnt 3.0 solves
+this the same way upstream.
+
+Upstream-Status: Inappropriate [libgnt 2.x is a maintenance-only branch;
+addressed differently in libgnt 3.0]
+
+Signed-off-by: Khem Raj <[email protected]>
+---
+ meson.build | 68 ++++++++---------------------------------------------
+ 1 file changed, 10 insertions(+), 58 deletions(-)
+
+--- a/meson.build
++++ b/meson.build
+@@ -69,68 +69,28 @@
+ #######################################################################
+ # Check for ncurses and other things used by it
+ #######################################################################
+-ncurses_available = true
+-ncurses_inc = []
+-# The order of this list is important to the condition that follows.
+-ncurses_libs = [
+-	compiler.find_library('ncursesw', required : false),
+-	compiler.find_library('panelw', required : false),
+-	compiler.find_library('tinfow', required : false),
++# Use pkg-config so that cross builds pick up the include directories from
++# the target sysroot rather than the build host's /usr/include.
++ncurses_deps = [
++	dependency('ncursesw', required : false),
++	dependency('panelw', required : false),
+ ]
+-if not ncurses_libs[0].found() or not ncurses_libs[1].found()
+-	ncurses_available = false
+-endif
+-
+-if host_machine.system() == 'windows'
+-	# FIXME: $host ?
+-	ncurses_sys_prefix = '/usr/$host/sys-root/mingw'
+-else
+-	ncurses_sys_prefix = '/usr'
+-endif
++ncurses_available = ncurses_deps[0].found() and ncurses_deps[1].found()
+ 
+-ncurses_sys_dirs = [ncurses_sys_prefix + '/include/ncursesw',
+-                    ncurses_sys_prefix + '/include']
+-
+-if ncurses_available
+-	# Some distros put the headers in ncursesw/, some don't
+-	found_ncurses_h = false
+-	foreach location : ncurses_sys_dirs
+-		f = location + '/ncurses.h'
+-		if not found_ncurses_h
+-			if compiler.has_header_symbol(f, 'get_wch',
+-			    prefix : '#define _XOPEN_SOURCE_EXTENDED')
+-				if location != '.'
+-					ncurses_inc += [include_directories(location)]
+-				endif
+-				found_ncurses_h = true
+-			endif
+-		endif
+-	endforeach
+-
+-	if not found_ncurses_h
+-		ncurses_inc = []
+-		ncurses_libs = []
+-		ncurses_available = false
+-	endif
+-else
+-	# ncursesw was not found. Look for plain old ncurses
+-	# The order of this list is important to the condition that follows.
+-	ncurses_libs = [
+-		compiler.find_library('ncurses', required : false),
+-		compiler.find_library('panel', required : false),
+-		compiler.find_library('tinfo', required : false),
++if not ncurses_available
++	# ncursesw was not found. Look for plain old ncurses.
++	ncurses_deps = [
++		dependency('ncurses', required : false),
++		dependency('panel', required : false),
+ 	]
+-	ncurses_available = ncurses_libs[0].found() and ncurses_libs[1].found()
++	ncurses_available = ncurses_deps[0].found() and ncurses_deps[1].found()
+ 	gnt_config.set('NO_WIDECHAR', true)
+ endif
+ if not ncurses_available
+ 	error('ncurses could not be found!')
+ endif
+ 
+-ncurses = declare_dependency(
+-    include_directories : ncurses_inc,
+-    dependencies : ncurses_libs
+-)
++ncurses = declare_dependency(dependencies : ncurses_deps)
+ 
+ libgnt_SOURCES = [
+ 	'gntwidget.c',
diff --git a/meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb b/meta-oe/recipes-support/pidgin/libgnt_2.14.3.bb
similarity index 74%
rename from meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb
rename to meta-oe/recipes-support/pidgin/libgnt_2.14.3.bb
index f2fe4a7a93..ac58a135bc 100644
--- a/meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb
+++ b/meta-oe/recipes-support/pidgin/libgnt_2.14.3.bb
@@ -11,13 +11,13 @@ inherit meson pkgconfig
 # SRC_URI = "hg://keep.imfreedom.org/${BPN};module=${BPN}
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/pidgin/${BPN}/${PV}/${BP}.tar.xz \
-    file://0001-meson-import-changes-from-3.0.-version.patch \
+    file://0001-meson-use-pkg-config-to-find-ncursesw-panelw.patch \
 "
-SRC_URI[sha256sum] = "5ec3e68e18f956e9998d79088b299fa3bca689bcc95c86001bc5da17c1eb4bd8"
+SRC_URI[sha256sum] = "57f5457f72999d0bb1a139a37f2746ec1b5a02c094f2710a339d8bcea4236123"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/pidgin/files/libgnt/"
 UPSTREAM_CHECK_REGEX = "${BPN}/(?P<pver>\d+(\.\d+)+)"
 
-EXTRA_OEMESON = "-Dintrospection=false -Ddoc=false"
+EXTRA_OEMESON = "-Dpython2=false -Ddoc=false"
 
 FILES:${PN} += "${libdir}/gnt/s.so ${libdir}/gnt/irssi.so"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.