From 3728e24a6b65a0b3d7a279634c5fe7e0d04669b7 Mon Sep 17 00:00:00 2001
From: Robert Kirkman <misternumberone@live.com>
Date: Fri, 10 Jan 2025 11:04:59 -0600
Subject: [PATCH] addpkg(x11/meld): 3.22.2

Closes #18900

(that bug was described as "with the general intention of running meld", and this is a newer way and a newer version of meld than that)
---
 x11-packages/meld/build.sh                    | 52 +++++++++++++++++++
 .../meld/handle-bindtextdomain-oserror.patch  | 11 ++++
 2 files changed, 63 insertions(+)
 create mode 100644 x11-packages/meld/build.sh
 create mode 100644 x11-packages/meld/handle-bindtextdomain-oserror.patch

diff --git a/x11-packages/meld/build.sh b/x11-packages/meld/build.sh
new file mode 100644
index 000000000000000..f57148e5e891f42
--- /dev/null
+++ b/x11-packages/meld/build.sh
@@ -0,0 +1,52 @@
+TERMUX_PKG_HOMEPAGE=https://meldmerge.org/
+TERMUX_PKG_DESCRIPTION="A visual diff and merge tool targeted at developers"
+TERMUX_PKG_LICENSE="GPL-2.0"
+TERMUX_PKG_MAINTAINER="@termux"
+TERMUX_PKG_VERSION="3.22.2"
+TERMUX_PKG_SRCURL=https://download.gnome.org/sources/meld/${TERMUX_PKG_VERSION%.*}/meld-${TERMUX_PKG_VERSION}.tar.xz
+TERMUX_PKG_SHA256=46a0a713fbcd1b153b377a1e0757c8ce255c9822467658eacfbd89b1e92316ef
+TERMUX_PKG_AUTO_UPDATE=true
+TERMUX_PKG_DEPENDS="gsettings-desktop-schemas, glib, gtk3, gtksourceview4, libcairo, pango, pycairo, pygobject, python"
+TERMUX_PKG_BUILD_DEPENDS="gettext"
+# build dependency only
+TERMUX_PKG_PYTHON_TARGET_DEPS="itstool"
+TERMUX_MESON_WHEEL_CROSSFILE="$TERMUX_PKG_TMPDIR/wheel-cross-file.txt"
+TERMUX_PKG_SETUP_PYTHON=true
+TERMUX_PKG_PLATFORM_INDEPENDENT=true
+# The "byte-compile" build setting will go away in the next release
+# It does not actually turn off byte compiling because Termux has recent Meson
+# (https://gitlab.gnome.org/GNOME/meld/-/commit/361ac82ce94dd46d0eed0e9239c34a8e3d13cd2e)
+TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
+-Dbyte-compile=false
+--cross-file $TERMUX_MESON_WHEEL_CROSSFILE
+"
+termux_step_pre_configure() {
+	termux_setup_glib_cross_pkg_config_wrapper
+
+	# This is necessary to prevent the error "...libxml2mod.so: cannot open shared object file..." but is insufficient alone
+	if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
+		local _bin="$TERMUX_PKG_BUILDDIR/_bin"
+		export ITSTOOL="${_bin}/itstool"
+		rm -rf "${_bin}"
+		mkdir -p "${_bin}"
+		cat > "$ITSTOOL" <<-EOF
+			#!$(command -v sh)
+			unset PYTHONPATH
+			exec $(command -v itstool) "\$@"
+		EOF
+		chmod 0700 "$ITSTOOL"
+	fi
+}
+
+# This is necessary to prevent the error "...libxml2mod.so: cannot open shared object file..." and depends on the block in termux_step_pre_configure()
+termux_step_configure() {
+	termux_setup_meson
+
+	cp -f $TERMUX_MESON_CROSSFILE $TERMUX_MESON_WHEEL_CROSSFILE
+	if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
+		sed -i 's|^\(\[binaries\]\)$|\1\nitstool = '\'$ITSTOOL\''|g' \
+			$TERMUX_MESON_WHEEL_CROSSFILE
+	fi
+
+	termux_step_configure_meson
+}
diff --git a/x11-packages/meld/handle-bindtextdomain-oserror.patch b/x11-packages/meld/handle-bindtextdomain-oserror.patch
new file mode 100644
index 000000000000000..5f82292dbb32ab1
--- /dev/null
+++ b/x11-packages/meld/handle-bindtextdomain-oserror.patch
@@ -0,0 +1,11 @@
+--- a/bin/meld
++++ b/bin/meld
+@@ -141,7 +141,7 @@ try:
+         locale.bindtextdomain(locale_domain, str(locale_dir))
+         locale.bind_textdomain_codeset(locale_domain, 'UTF-8')
+         locale.textdomain(locale_domain)
+-except AttributeError as e:
++except (AttributeError,OSError) as e:
+     # Python builds linked without libintl (i.e., OSX) don't have
+     # bindtextdomain(), which causes Gtk.Builder translations to fail.
+     print(