Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] GIMP 3
@ 2024-04-18  7:24 classabbyamp
  2024-04-18  7:26 ` [PR REVIEW] " classabbyamp
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: classabbyamp @ 2024-04-18  7:24 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 459 bytes --]

There is a new pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**


A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 24574 bytes --]

From d330997c6868cb21468ebbb847f9e7438781e3a8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 1/8] libjxl: disable gimp plugin

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index 88403273d483bf..2e70998346238c 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.2
-revision=1
+revision=2
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"
@@ -64,7 +64,6 @@ libjxl-plugins_package() {
 	depends="desktop-file-utils"
 	pkg_install() {
 		vmove usr/lib/gdk-pixbuf-2.0
-		vmove usr/lib/gimp
 		vmove usr/share/mime
 		vmove usr/share/thumbnailers
 	}

From 15df0645d9ad118a332e220ca50694a3ea25b943 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 2/8] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 6cbb4964a25907519e26ce10ec4378ad14b29275 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 3/8] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  59 +++---
 8 files changed, 69 insertions(+), 286 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index 4b88c10b0d390f..7e8a0dd2ec8563 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,15 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index 39532a8d8c99df..45b0e47cdad3be 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,40 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.36
+version=2.99.18
 revision=1
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+build_style=meson
+build_helper="gir"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ $(vopt_bool gir g-ir-doc) $(vopt_bool gir can-crosscompile-gir)
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gi-docgen gettext gobject-introspection yelp-tools"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=3d3bc3c69a4bdb3aea9ba2d5385ed98ea03953f3857aafd1d6976011ed7cdbb2
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+build_options="gir"
+build_options_default="gir"
+
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +44,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
+		vmove usr/share/doc
 		vmove "usr/lib/*.so"
+		if [ "$build_option_gir" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+		fi
 	}
 }

From 4e3ea0896cbd54ece1740153d125159240041aae Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 4/8] gmic: rebuild for gimp 3

---
 srcpkgs/gmic/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index fa37651bb6deea..24d10147e3abad 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -1,7 +1,7 @@
 # Template file for 'gmic'
 pkgname=gmic
 version=3.1.6
-revision=5
+revision=6
 _zart_hash=34ebf6cce0bafb98abe57cec83c4a02cd1abeca0
 create_wrksrc=yes
 build_wrksrc="src"

From aca92a2abae05416f3e836bfc12f731ed6fa0891 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 5/8] nufraw: rebuild for gimp 3

---
 srcpkgs/nufraw/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..86a4d73adb797f 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp

From aa93a4ff75b2aec7e77b8b84f7acc52cb6ad5092 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 6/8] xsane: rebuild for gimp 3

---
 srcpkgs/xsane/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..0f69c0f65fe6b8 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,7 +1,7 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
 makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
 depends="sane"

From ff4fdb33fbc88c6fcb29b7f3e8f75ea34a28a7ac Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/8] gimp-lqr-plugin: rebuild for gimp 3

---
 srcpkgs/gimp-lqr-plugin/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..9a516b3798b0e0 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,7 +1,7 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"

From 400d9da2a4bb4411c81b0e3961d1b7dcc0c7bea3 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 8/8] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 26 +++++++-------------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..68be9e18dd0ffe 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,14 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
 short_desc="Suite of gimp plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR REVIEW] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
  2024-04-18  7:26 ` [PR REVIEW] " classabbyamp
@ 2024-04-18  7:26 ` classabbyamp
  2024-04-21 20:02 ` [PR PATCH] [Updated] " classabbyamp
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-04-18  7:26 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 157 bytes --]

New review comment by classabbyamp on void-packages repository

https://github.com/void-linux/void-packages/pull/49890#discussion_r1570150739

Comment:
TODO

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR REVIEW] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
@ 2024-04-18  7:26 ` classabbyamp
  2024-04-18  7:26 ` classabbyamp
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-04-18  7:26 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 189 bytes --]

New review comment by classabbyamp on void-packages repository

https://github.com/void-linux/void-packages/pull/49890#discussion_r1570149887

Comment:
TODO: update minver for main release

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
  2024-04-18  7:26 ` [PR REVIEW] " classabbyamp
  2024-04-18  7:26 ` classabbyamp
@ 2024-04-21 20:02 ` classabbyamp
  2024-06-12  2:23 ` classabbyamp
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-04-21 20:02 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [ ] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 24587 bytes --]

From e9cd8a2130b2d32b04a44c85a64327b31f169357 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 1/8] libjxl: disable gimp plugin

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index 88403273d483bf..2e70998346238c 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.2
-revision=1
+revision=2
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"
@@ -64,7 +64,6 @@ libjxl-plugins_package() {
 	depends="desktop-file-utils"
 	pkg_install() {
 		vmove usr/lib/gdk-pixbuf-2.0
-		vmove usr/lib/gimp
 		vmove usr/share/mime
 		vmove usr/share/thumbnailers
 	}

From 0197641a0f153b66af34c713c966612a8f200991 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 2/8] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 24dd3eafb29db334fd95f40a888e47efc464f7fe Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 3/8] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  61 ++++---
 8 files changed, 70 insertions(+), 287 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index c4a876216d6397..7ce16b68e02d42 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,15 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index 265f1c8e76a3ec..45b0e47cdad3be 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,40 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.36
-revision=2
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+version=2.99.18
+revision=1
+build_style=meson
+build_helper="gir"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ $(vopt_bool gir g-ir-doc) $(vopt_bool gir can-crosscompile-gir)
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gi-docgen gettext gobject-introspection yelp-tools"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=3d3bc3c69a4bdb3aea9ba2d5385ed98ea03953f3857aafd1d6976011ed7cdbb2
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+build_options="gir"
+build_options_default="gir"
+
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +44,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
+		vmove usr/share/doc
 		vmove "usr/lib/*.so"
+		if [ "$build_option_gir" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+		fi
 	}
 }

From b9dc2c9bd54954376b4d0906753bb11a3c6a0a32 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 4/8] gmic: rebuild for gimp 3

---
 srcpkgs/gmic/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index fa37651bb6deea..24d10147e3abad 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -1,7 +1,7 @@
 # Template file for 'gmic'
 pkgname=gmic
 version=3.1.6
-revision=5
+revision=6
 _zart_hash=34ebf6cce0bafb98abe57cec83c4a02cd1abeca0
 create_wrksrc=yes
 build_wrksrc="src"

From cd08e805ad039870203e61d5531b6b0a4d0d281e Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 5/8] nufraw: rebuild for gimp 3

---
 srcpkgs/nufraw/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..86a4d73adb797f 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp

From 11727e39fa51d8ac2d6127c22f1275dfe9f85c31 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 6/8] xsane: rebuild for gimp 3

---
 srcpkgs/xsane/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..0f69c0f65fe6b8 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,7 +1,7 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
 makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
 depends="sane"

From 804edfc40e86a6539bef08e8b94c37091e2c4f99 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/8] gimp-lqr-plugin: rebuild for gimp 3

---
 srcpkgs/gimp-lqr-plugin/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..9a516b3798b0e0 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,7 +1,7 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"

From 1fda55ba20635d3bbb641c7dcdba6b3cae7a05fb Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 8/8] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 26 +++++++-------------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..68be9e18dd0ffe 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,14 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
 short_desc="Suite of gimp plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (2 preceding siblings ...)
  2024-04-21 20:02 ` [PR PATCH] [Updated] " classabbyamp
@ 2024-06-12  2:23 ` classabbyamp
  2024-06-12  2:28 ` classabbyamp
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-06-12  2:23 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 42030 bytes --]

From 61ecd17eb244212706713ff2de6e6c321c255cd8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 391a53dad07ec00ee7bf3054f711be322031260c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  59 +++---
 9 files changed, 71 insertions(+), 286 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index b6017a715ced19..006a36cd77a45e 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,15 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..171c0ccb0890c9
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index 3ed1fc7cc9c740..45b0e47cdad3be 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,40 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
+version=2.99.18
 revision=1
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+build_style=meson
+build_helper="gir"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ $(vopt_bool gir g-ir-doc) $(vopt_bool gir can-crosscompile-gir)
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gi-docgen gettext gobject-introspection yelp-tools"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+build_options="gir"
+build_options_default="gir"
+
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +44,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
+		vmove usr/share/doc
 		vmove "usr/lib/*.so"
+		if [ "$build_option_gir" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+		fi
 	}
 }

From 931c746eb3a78bb38a77bb50090efdb98a90d316 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  57 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 7 files changed, 326 insertions(+)
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update

diff --git a/common/shlibs b/common/shlibs
index 006a36cd77a45e..88e2952d599943 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,6 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..f3cf73ddf75ff3
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,57 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"

From 266adcd21c792540963fde559dfa648fd00d3795 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index 88403273d483bf..bbe8c1053a8ec0 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.2
-revision=1
+revision=2
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From 953e5342d5a926a5d13a47dd3cadb8e4c47f003b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index fa37651bb6deea..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -1,7 +1,7 @@
 # Template file for 'gmic'
 pkgname=gmic
 version=3.1.6
-revision=5
+revision=6
 _zart_hash=34ebf6cce0bafb98abe57cec83c4a02cd1abeca0
 create_wrksrc=yes
 build_wrksrc="src"
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From d228714f13238b64cbf164f53174d118a43b9376 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..9e7f8496cf722f 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -36,8 +36,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From a8ff6d7e9c99a2f803ded577d2d9391493c8022f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From fbc51163fba0298c5c3b52a417b540af7cec5e57 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From d4332774d91fc63e5907e8eadad4ba74615843eb Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (3 preceding siblings ...)
  2024-06-12  2:23 ` classabbyamp
@ 2024-06-12  2:28 ` classabbyamp
  2024-06-12  5:21 ` classabbyamp
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-06-12  2:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 42602 bytes --]

From 61ecd17eb244212706713ff2de6e6c321c255cd8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 391a53dad07ec00ee7bf3054f711be322031260c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  59 +++---
 9 files changed, 71 insertions(+), 286 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index b6017a715ced19..006a36cd77a45e 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,15 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..171c0ccb0890c9
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index 3ed1fc7cc9c740..45b0e47cdad3be 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,40 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
+version=2.99.18
 revision=1
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+build_style=meson
+build_helper="gir"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ $(vopt_bool gir g-ir-doc) $(vopt_bool gir can-crosscompile-gir)
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gi-docgen gettext gobject-introspection yelp-tools"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+build_options="gir"
+build_options_default="gir"
+
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +44,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
+		vmove usr/share/doc
 		vmove "usr/lib/*.so"
+		if [ "$build_option_gir" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+		fi
 	}
 }

From f72f648a7424c89ece05fbd3de64326fa07819dd Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  57 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 328 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 006a36cd77a45e..88e2952d599943 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,6 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..f3cf73ddf75ff3
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,57 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From ac9de44b85237e31863062d3c1b36dcec83869a4 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index 88403273d483bf..bbe8c1053a8ec0 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.2
-revision=1
+revision=2
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From fc922b49e4c1f8d92d50782bbf641dae58948856 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index fa37651bb6deea..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -1,7 +1,7 @@
 # Template file for 'gmic'
 pkgname=gmic
 version=3.1.6
-revision=5
+revision=6
 _zart_hash=34ebf6cce0bafb98abe57cec83c4a02cd1abeca0
 create_wrksrc=yes
 build_wrksrc="src"
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From 242ab4f57120f5eae938fb0fc5ea40cedcaab97b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..9e7f8496cf722f 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -36,8 +36,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From 67a9bfe187f01791e63af27184fbfaedc4f2b3c0 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From bdd274802a20a4fdcf2fe8ad32dbd1e5292050ba Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From 04fb01781cd83eaac309b14a2ae79c41a328a3ef Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (4 preceding siblings ...)
  2024-06-12  2:28 ` classabbyamp
@ 2024-06-12  5:21 ` classabbyamp
  2024-06-12  6:50 ` classabbyamp
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-06-12  5:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 43209 bytes --]

From 61ecd17eb244212706713ff2de6e6c321c255cd8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From f1f42f8f3b3f03276af6b078f8312b0452ca61dd Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  59 +++---
 9 files changed, 71 insertions(+), 286 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index b6017a715ced19..006a36cd77a45e 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,15 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..24e3bddd8303ba
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x plugins, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index 3ed1fc7cc9c740..59058b8598ae74 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,40 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
+version=2.99.18
 revision=1
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+build_style=meson
+build_helper="gir qemu"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ $(vopt_bool gir g-ir-doc) $(vopt_bool gir can-crosscompile-gir)
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gi-docgen gettext gobject-introspection yelp-tools librsvg-devel glib-devel"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+build_options="gir"
+build_options_default="gir"
+
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +44,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
+		vmove usr/share/doc
 		vmove "usr/lib/*.so"
+		if [ "$build_option_gir" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+		fi
 	}
 }

From bc5a195776d1e149823ec81c429617ca4283f3fb Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  59 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 330 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 006a36cd77a45e..88e2952d599943 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,6 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..6e4cd9a04cd410
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,59 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+	vsed -i -e "s/org.gimp.GIMP/&${version%%.*}/" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml"
+	mv "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP${version%%.*}.appdata.xml"
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From 3a2506b301f19c5a46ed49aa4895e9881386a23f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index 88403273d483bf..bbe8c1053a8ec0 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.2
-revision=1
+revision=2
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From 147cf0a087d35a23e0eb2d83e3bf0a5d47a782eb Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index fa37651bb6deea..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -1,7 +1,7 @@
 # Template file for 'gmic'
 pkgname=gmic
 version=3.1.6
-revision=5
+revision=6
 _zart_hash=34ebf6cce0bafb98abe57cec83c4a02cd1abeca0
 create_wrksrc=yes
 build_wrksrc="src"
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From bc2d8b89dd3067f89275e05479fe0bf920bae48d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..8748aa91afc779 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -18,6 +18,7 @@ license="GPL-2.0-or-later"
 homepage="https://sourceforge.net/projects/nufraw/"
 distfiles="${SOURCEFORGE_SITE}/nufraw/nufraw-${_ver}.tar.gz"
 checksum=2c7dcc1590993ec267b3112562b2433010d6f94f6acc6506c76aa29cf8c6c32c
+conflicts="dcraw>=0"
 
 case "$XBPS_TARGET_MACHINE" in
 	armv[67]l* | aarch64* | riscv64*)
@@ -36,8 +37,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From c6e73748a53b1693b306fa2b8d5eabdcf290f6e5 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From 79700579eed93c513f988c541da9abe976b16ff6 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From 1300b53a19ce9a714ed7ec789e197aa4ad3c071b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (5 preceding siblings ...)
  2024-06-12  5:21 ` classabbyamp
@ 2024-06-12  6:50 ` classabbyamp
  2024-09-11  1:56 ` github-actions
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-06-12  6:50 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 43092 bytes --]

From 61ecd17eb244212706713ff2de6e6c321c255cd8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From c64711f21fe33d88156edaad0856a2534b05ebc8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  56 +++---
 9 files changed, 68 insertions(+), 286 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index b6017a715ced19..006a36cd77a45e 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,15 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..24e3bddd8303ba
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x plugins, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index 3ed1fc7cc9c740..1c892bc904c414 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,37 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
+version=2.99.18
 revision=1
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+build_style=meson
+build_helper="gir qemu"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gettext gi-docgen gobject-introspection
+ yelp-tools librsvg-devel glib-devel"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +41,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
 		vmove "usr/lib/*.so"
+		if [ -z "$CROSS_BUILD" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+			vmove usr/share/doc
+		fi
 	}
 }

From b19bd18dbac2d907726d31617d870bbd8fae3e3e Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  59 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 330 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 006a36cd77a45e..88e2952d599943 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -549,6 +549,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..6e4cd9a04cd410
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,59 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+	vsed -i -e "s/org.gimp.GIMP/&${version%%.*}/" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml"
+	mv "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP${version%%.*}.appdata.xml"
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From f2a69ebc29a6fb16b82601badcb01ddc371bea14 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index 88403273d483bf..bbe8c1053a8ec0 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.2
-revision=1
+revision=2
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From 00d32799a0bb1612100c5f036adb78b131c8aee6 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index fa37651bb6deea..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -1,7 +1,7 @@
 # Template file for 'gmic'
 pkgname=gmic
 version=3.1.6
-revision=5
+revision=6
 _zart_hash=34ebf6cce0bafb98abe57cec83c4a02cd1abeca0
 create_wrksrc=yes
 build_wrksrc="src"
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From f784b4fbb6c0f4fe9fc001ffd9b0498270541160 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..8748aa91afc779 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -18,6 +18,7 @@ license="GPL-2.0-or-later"
 homepage="https://sourceforge.net/projects/nufraw/"
 distfiles="${SOURCEFORGE_SITE}/nufraw/nufraw-${_ver}.tar.gz"
 checksum=2c7dcc1590993ec267b3112562b2433010d6f94f6acc6506c76aa29cf8c6c32c
+conflicts="dcraw>=0"
 
 case "$XBPS_TARGET_MACHINE" in
 	armv[67]l* | aarch64* | riscv64*)
@@ -36,8 +37,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From 7b4e6a13e5ebbe55389fbd523a986969ab17d260 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From bef3cce89ef57c0aedf9c5392a1f8b6e45c79e1b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From 958502e8c4b28fd269a723b4631b6fbaa6c43fc5 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (6 preceding siblings ...)
  2024-06-12  6:50 ` classabbyamp
@ 2024-09-11  1:56 ` github-actions
  2024-10-26  4:39 ` [PR PATCH] [Updated] " classabbyamp
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: github-actions @ 2024-09-11  1:56 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 305 bytes --]

New comment by github-actions[bot] on void-packages repository

https://github.com/void-linux/void-packages/pull/49890#issuecomment-2342460598

Comment:
Pull Requests become stale 90 days after last activity and are closed 14 days after that.  If this pull request is still relevant bump it or assign it.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (7 preceding siblings ...)
  2024-09-11  1:56 ` github-actions
@ 2024-10-26  4:39 ` classabbyamp
  2024-10-26  4:48 ` classabbyamp
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-10-26  4:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 42660 bytes --]

From 795ff0ab05dc65ddae2ee5fa47acf72ac23908f8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 85ad84edf1b3d1b449369e7d49560fe3f280fe65 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  58 +++---
 9 files changed, 69 insertions(+), 287 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index 6d083594e55a51..2622baf6d65c80 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,15 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..24e3bddd8303ba
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x plugins, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index a50409d5ce5af1..1c892bc904c414 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,37 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
-revision=3
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+version=2.99.18
+revision=1
+build_style=meson
+build_helper="gir qemu"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gettext gi-docgen gobject-introspection
+ yelp-tools librsvg-devel glib-devel"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +41,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
 		vmove "usr/lib/*.so"
+		if [ -z "$CROSS_BUILD" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+			vmove usr/share/doc
+		fi
 	}
 }

From a355dc7a05298fe67cfc41a63e759f1aaaa6aa93 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  59 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 330 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 2622baf6d65c80..d7bfbc438e21d1 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,6 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..6e4cd9a04cd410
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,59 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+	vsed -i -e "s/org.gimp.GIMP/&${version%%.*}/" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml"
+	mv "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP${version%%.*}.appdata.xml"
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From 810d3b9b6b3ebe53f59f6aaf926df17aaf073cb1 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index bdf38b2432761f..6ee5975767fd9f 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway-devel libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From f2131e9acf4485c34a858ab2c10142a68d85248f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index 24d10147e3abad..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From dae0acbb6c9caacbe99b7d25a0ea2d1dda4efde9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..8748aa91afc779 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -18,6 +18,7 @@ license="GPL-2.0-or-later"
 homepage="https://sourceforge.net/projects/nufraw/"
 distfiles="${SOURCEFORGE_SITE}/nufraw/nufraw-${_ver}.tar.gz"
 checksum=2c7dcc1590993ec267b3112562b2433010d6f94f6acc6506c76aa29cf8c6c32c
+conflicts="dcraw>=0"
 
 case "$XBPS_TARGET_MACHINE" in
 	armv[67]l* | aarch64* | riscv64*)
@@ -36,8 +37,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From ffa88b6b02c93b95cdaf856ebc208f50eb371ec1 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From 1fa425972bd9aa3614a44cadddca85393b3ca6ac Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From 024de78dab966554fd966dcfb1a9518e3682230f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (8 preceding siblings ...)
  2024-10-26  4:39 ` [PR PATCH] [Updated] " classabbyamp
@ 2024-10-26  4:48 ` classabbyamp
  2024-10-26 11:53 ` classabbyamp
  2024-11-07 20:54 ` classabbyamp
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-10-26  4:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 42918 bytes --]

From 795ff0ab05dc65ddae2ee5fa47acf72ac23908f8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 85ad84edf1b3d1b449369e7d49560fe3f280fe65 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 srcpkgs/gimp/template                         |  58 +++---
 9 files changed, 69 insertions(+), 287 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch

diff --git a/common/shlibs b/common/shlibs
index 6d083594e55a51..2622baf6d65c80 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,15 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..24e3bddd8303ba
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x plugins, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index a50409d5ce5af1..1c892bc904c414 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,37 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
-revision=3
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+version=2.99.18
+revision=1
+build_style=meson
+build_helper="gir qemu"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gettext gi-docgen gobject-introspection
+ yelp-tools librsvg-devel glib-devel"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +41,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
 		vmove "usr/lib/*.so"
+		if [ -z "$CROSS_BUILD" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+			vmove usr/share/doc
+		fi
 	}
 }

From a355dc7a05298fe67cfc41a63e759f1aaaa6aa93 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  59 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 330 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 2622baf6d65c80..d7bfbc438e21d1 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,6 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..6e4cd9a04cd410
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,59 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+	vsed -i -e "s/org.gimp.GIMP/&${version%%.*}/" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml"
+	mv "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP${version%%.*}.appdata.xml"
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From 86f9314f4cacfc4685f2be94f6b0089022a106a6 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index bdf38b2432761f..3d054b570a7662 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.3
-revision=2
+revision=3
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway-devel libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From 7de3e3cf80ae73619f2edf12bb3773d6577decef Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index 24d10147e3abad..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From 35eb2067a45d54323a2f5da912fcf0aee51706e5 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..8748aa91afc779 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -18,6 +18,7 @@ license="GPL-2.0-or-later"
 homepage="https://sourceforge.net/projects/nufraw/"
 distfiles="${SOURCEFORGE_SITE}/nufraw/nufraw-${_ver}.tar.gz"
 checksum=2c7dcc1590993ec267b3112562b2433010d6f94f6acc6506c76aa29cf8c6c32c
+conflicts="dcraw>=0"
 
 case "$XBPS_TARGET_MACHINE" in
 	armv[67]l* | aarch64* | riscv64*)
@@ -36,8 +37,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From a0d66afe2e85b0567b3478f5ba6dd77b950d4fa5 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From 3c36138ee32fa7107861a7d1ce4c83ee05357289 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From a21e28c72a0262be3260ffd51b41c82dba348fb2 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (9 preceding siblings ...)
  2024-10-26  4:48 ` classabbyamp
@ 2024-10-26 11:53 ` classabbyamp
  2024-11-07 20:54 ` classabbyamp
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-10-26 11:53 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 44108 bytes --]

From 795ff0ab05dc65ddae2ee5fa47acf72ac23908f8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 1/9] gegl: update to 0.4.48.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..f395fe359f2dd1 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.48
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=418c26d94be8805d7d98f6de0c6825ca26bd74fcacb6c188da47533d9ee28247
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From ddf9f218c8ec09e17c24898d3babd1bf4e26296f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 2/9] gimp: update to 2.99.18.

---
 common/shlibs                                 |  18 +-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/install-gimpchoice-h.patch   |  25 +++
 .../gimp/patches/libheif-1.18-compat.patch    |  20 ---
 srcpkgs/gimp/template                         |  58 +++---
 10 files changed, 69 insertions(+), 307 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp/patches/install-gimpchoice-h.patch
 delete mode 100644 srcpkgs/gimp/patches/libheif-1.18-compat.patch

diff --git a/common/shlibs b/common/shlibs
index 6d083594e55a51..2622baf6d65c80 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,15 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..24e3bddd8303ba
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x plugins, install gimp2.
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/install-gimpchoice-h.patch b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
new file mode 100644
index 00000000000000..533b14d397f814
--- /dev/null
+++ b/srcpkgs/gimp/patches/install-gimpchoice-h.patch
@@ -0,0 +1,25 @@
+From 11892f1d83ffc465346dab7e2e8c6e790f555a64 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 21 Feb 2024 11:08:23 +0100
+Subject: [PATCH] Issue #10900: install missing gimpchoice.h.
+
+Argh how this could pass without anyone noticing?!
+---
+ libgimpbase/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
+index a77d125f39d..a2c27016b10 100644
+--- a/libgimpbase/meson.build
++++ b/libgimpbase/meson.build
+@@ -84,6 +84,7 @@ libgimpbase_headers_introspectable = files(
+   'gimpbaseenums.h',
+   'gimpbasetypes.h',
+   'gimpchecks.h',
++  'gimpchoice.h',
+   'gimpcpuaccel.h',
+   'gimpenv.h',
+   'gimplimits.h',
+-- 
+GitLab
+
diff --git a/srcpkgs/gimp/patches/libheif-1.18-compat.patch b/srcpkgs/gimp/patches/libheif-1.18-compat.patch
deleted file mode 100644
index e714d25f2bab6b..00000000000000
--- a/srcpkgs/gimp/patches/libheif-1.18-compat.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/configure.ac	2024-08-29 18:28:19.457012043 -0500
-+++ b/configure.ac	2024-08-29 18:28:29.154953488 -0500
-@@ -1843,13 +1843,13 @@
- can_import_avif=no
- can_export_avif=no
- if test "x$have_libheif" = xyes; then
--  can_import_heic=`$PKG_CONFIG --variable=builtin_h265_decoder libheif`
--  can_export_heic=`$PKG_CONFIG --variable=builtin_h265_encoder libheif`
-+  can_import_heic=yes
-+  can_export_heic=yes
-   if test "x$can_import_heic" = xyes; then
-     MIME_TYPES="$MIME_TYPES;image/heif;image/heic"
-   fi
--  can_import_avif=`$PKG_CONFIG --variable=builtin_avif_decoder libheif`
--  can_export_avif=`$PKG_CONFIG --variable=builtin_avif_encoder libheif`
-+  can_import_avif=yes
-+  can_export_avif=yes
-   if test "x$can_import_avif" = xyes; then
-     MIME_TYPES="$MIME_TYPES;image/avif"
-   fi
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index a50409d5ce5af1..1c892bc904c414 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,37 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
-revision=3
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+version=2.99.18
+revision=1
+build_style=meson
+build_helper="gir qemu"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gettext gi-docgen gobject-introspection
+ yelp-tools librsvg-devel glib-devel"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes1 librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1 python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
-conf_files="/etc/gimp/${version%%.*}.0/*"
+#conf_files="/etc/gimp/${version%%.*}.0/*"
+conf_files="/etc/gimp/${version%.*}/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version}.tar.xz"
+checksum=8c1bb7a94ac0d4d0cde4d701d8b356387c2ecd87abbd35bbf7d222d40f6ddb6e
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +41,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
 		vmove "usr/lib/*.so"
+		if [ -z "$CROSS_BUILD" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+			vmove usr/share/doc
+		fi
 	}
 }

From 1cf792f2b670062008d23b4178526fa2c6289458 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 3/9] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  59 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 330 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 2622baf6d65c80..d7bfbc438e21d1 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,6 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..6e4cd9a04cd410
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,59 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+	vsed -i -e "s/org.gimp.GIMP/&${version%%.*}/" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml"
+	mv "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP${version%%.*}.appdata.xml"
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From 32b5cd6487a6404bc62f7dfb99bed996b91928fe Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 4/9] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index bdf38b2432761f..3d054b570a7662 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.3
-revision=2
+revision=3
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway-devel libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From 5b27182fa2bf22c54fe9e6aa4900a8ef22cd6786 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 5/9] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index 24d10147e3abad..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From eb6e909b17b6857efe783268217f8c3abbb4d7a9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 6/9] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..8748aa91afc779 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -18,6 +18,7 @@ license="GPL-2.0-or-later"
 homepage="https://sourceforge.net/projects/nufraw/"
 distfiles="${SOURCEFORGE_SITE}/nufraw/nufraw-${_ver}.tar.gz"
 checksum=2c7dcc1590993ec267b3112562b2433010d6f94f6acc6506c76aa29cf8c6c32c
+conflicts="dcraw>=0"
 
 case "$XBPS_TARGET_MACHINE" in
 	armv[67]l* | aarch64* | riscv64*)
@@ -36,8 +37,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From 480b1c1c194e373c9eb647af3a15a14858b901d9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 7/9] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From 4fa3f5338304c78f7cf737da5c898daeca2210a9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 8/9] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From 8c4b5f1c262eb239677ee2200cb5da2758c109ec Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 9/9] resynthesizer: update to 2.0.3+2.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..2b56f8f406b456 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+2
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=dee67110c51cbc69c28435ac7485766c3eb30a94
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=a9ae689f5c10e284b0b8cab03baa05caab029fae2250bcdcc7e1d3ec6f8c367d

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] GIMP 3
  2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
                   ` (10 preceding siblings ...)
  2024-10-26 11:53 ` classabbyamp
@ 2024-11-07 20:54 ` classabbyamp
  11 siblings, 0 replies; 13+ messages in thread
From: classabbyamp @ 2024-11-07 20:54 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages gimp3
https://github.com/void-linux/void-packages/pull/49890

GIMP 3
WIP until at minimum the full GIMP 3 release, expected in about a month: https://gitlab.gnome.org/GNOME/gimp/-/issues/10373

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

#### Plugins
- [ ] nufraw - not (yet) compatible
- [x] resynthesizer - compatible on in-dev branch
- [ ] gmic - not (yet) compatible
- [ ] xsane
- [ ] gimp-lqr-plugin - not (yet) compatible)
- [x] libjxl - disable because gimp supports it directly now

A patch file from https://github.com/void-linux/void-packages/pull/49890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gimp3-49890.patch --]
[-- Type: text/x-diff, Size: 46930 bytes --]

From 7de398301fa3c2790a3d2dd013e5ca69f1f17994 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:35 -0400
Subject: [PATCH 01/10] gegl: update to 0.4.50.

---
 srcpkgs/gegl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gegl/template b/srcpkgs/gegl/template
index 5d4b070cd703ee..b116a6726036a3 100644
--- a/srcpkgs/gegl/template
+++ b/srcpkgs/gegl/template
@@ -1,7 +1,7 @@
 # Template file for 'gegl'
 pkgname=gegl
-version=0.4.46
-revision=2
+version=0.4.50
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dintrospection=true -Dvapigen=enabled
@@ -18,7 +18,7 @@ license="GPL-3.0-only, LGPL-3.0-only"
 homepage="https://gegl.org/"
 changelog="https://gitlab.gnome.org/GNOME/gegl/-/raw/master/docs/NEWS.adoc"
 distfiles="https://download.gimp.org/pub/gegl/${version%.*}/gegl-${version}.tar.xz"
-checksum=d0b3b2481bc8774c5f3d0a487611910166d18eef823a859fb91e781ab7b1e892
+checksum=6084969b06ee86ca71142133773f27e13f02e5a6a22c2cfce452ecaaddb790c1
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From b6ae894626decf7f883f3e29876e949838aea712 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Wed, 6 Nov 2024 12:41:45 -0500
Subject: [PATCH 02/10] babl: update to 0.1.110.

---
 srcpkgs/babl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/babl/template b/srcpkgs/babl/template
index a635b6b485feca..a4c0df506a804f 100644
--- a/srcpkgs/babl/template
+++ b/srcpkgs/babl/template
@@ -1,6 +1,6 @@
 # Template file for 'babl'
 pkgname=babl
-version=0.1.106
+version=0.1.110
 revision=1
 build_style=meson
 build_helper=gir
@@ -13,7 +13,7 @@ license="LGPL-3.0-only"
 homepage="https://gegl.org/babl/"
 changelog="https://gitlab.gnome.org/GNOME/babl/-/raw/master/NEWS"
 distfiles="https://download.gimp.org/pub/babl/${version%.*}/babl-${version}.tar.xz"
-checksum=d325135d3304f088c134cc620013acf035de2e5d125a50a2d91054e7377c415f
+checksum=bf47be7540d6275389f66431ef03064df5376315e243d0bab448c6aa713f5743
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Db_lto=false"

From 106aac99af2ecc19fa5ef01d42d90cca18169d51 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:29 -0400
Subject: [PATCH 03/10] gimp: update to 3.0.0+rc1.

---
 common/shlibs                                 |  36 +++-
 srcpkgs/gimp-python                           |   1 -
 srcpkgs/gimp/INSTALL                          |   2 +-
 srcpkgs/gimp/INSTALL.msg                      |   2 +
 srcpkgs/gimp/patches/atol.patch               |  21 +++
 srcpkgs/gimp/patches/brushes.patch            |  15 ++
 srcpkgs/gimp/patches/fix-cross.patch          |  18 --
 srcpkgs/gimp/patches/fix-segfault.patch       | 169 ------------------
 srcpkgs/gimp/patches/gcc14.patch              |  63 -------
 .../gimp/patches/libheif-1.18-compat.patch    |  20 ---
 srcpkgs/gimp/template                         |  55 +++---
 11 files changed, 96 insertions(+), 306 deletions(-)
 delete mode 120000 srcpkgs/gimp-python
 create mode 100644 srcpkgs/gimp/INSTALL.msg
 create mode 100644 srcpkgs/gimp/patches/atol.patch
 create mode 100644 srcpkgs/gimp/patches/brushes.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-cross.patch
 delete mode 100644 srcpkgs/gimp/patches/fix-segfault.patch
 delete mode 100644 srcpkgs/gimp/patches/gcc14.patch
 delete mode 100644 srcpkgs/gimp/patches/libheif-1.18-compat.patch

diff --git a/common/shlibs b/common/shlibs
index a1657e4c08bbfc..734ddc0be32580 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,15 +560,33 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
-libgimp-2.0.so.0 libgimp-2.10.0_1
-libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
-libgimpui-2.0.so.0 libgimp-2.10.0_1
-libgimpbase-2.0.so.0 libgimp-2.10.0_1
-libgimpthumb-2.0.so.0 libgimp-2.10.0_1
-libgimpconfig-2.0.so.0 libgimp-2.10.0_1
-libgimpmath-2.0.so.0 libgimp-2.10.0_1
-libgimpcolor-2.0.so.0 libgimp-2.10.0_1
-libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgimp-3.0.so.0 libgimp-2.99.18_1
+libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
+libgimpui-3.0.so.0 libgimp-2.99.18_1
+libgimpbase-3.0.so.0 libgimp-2.99.18_1
+libgimpthumb-3.0.so.0 libgimp-2.99.18_1
+libgimpconfig-3.0.so.0 libgimp-2.99.18_1
+libgimpmath-3.0.so.0 libgimp-2.99.18_1
+libgimpcolor-3.0.so.0 libgimp-2.99.18_1
+libgimpmodule-3.0.so.0 libgimp-2.99.18_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
+libgimp-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpwidgets-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpui-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpbase-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpthumb-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpconfig-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpmath-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpcolor-3.0.so.0 libgimp-3.0.0+rc1_1
+libgimpmodule-3.0.so.0 libgimp-3.0.0+rc1_1
 libgmic.so.3 gmic-3.1.6_1
 libcgmic.so.3 gmic-3.1.6_1
 libexiv2.so.28 exiv2-0.28.1_1
diff --git a/srcpkgs/gimp-python b/srcpkgs/gimp-python
deleted file mode 120000
index 92344a4bb4a963..00000000000000
--- a/srcpkgs/gimp-python
+++ /dev/null
@@ -1 +0,0 @@
-gimp
\ No newline at end of file
diff --git a/srcpkgs/gimp/INSTALL b/srcpkgs/gimp/INSTALL
index 87064d64438f00..daeff6b33cec0f 100644
--- a/srcpkgs/gimp/INSTALL
+++ b/srcpkgs/gimp/INSTALL
@@ -2,7 +2,7 @@
 case "${ACTION}" in
 pre)
 	if [ "$UPDATE" = "yes" ]; then
-		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm -f
 	fi
 	;;
 esac
diff --git a/srcpkgs/gimp/INSTALL.msg b/srcpkgs/gimp/INSTALL.msg
new file mode 100644
index 00000000000000..24e3bddd8303ba
--- /dev/null
+++ b/srcpkgs/gimp/INSTALL.msg
@@ -0,0 +1,2 @@
+GIMP 3 breaks compatibility with many plugins. If you wish to continue
+using GIMP 2.x plugins, install gimp2.
diff --git a/srcpkgs/gimp/patches/atol.patch b/srcpkgs/gimp/patches/atol.patch
new file mode 100644
index 00000000000000..3d660783db053b
--- /dev/null
+++ b/srcpkgs/gimp/patches/atol.patch
@@ -0,0 +1,21 @@
+source: https://github.com/chimera-linux/cports/blob/master/main/gimp/patches/atol.patch
+
+commit f3237e747d854967a5333b5870dc7aae5cd19431
+Author: q66 <q66@chimera-linux.org>
+Date:   Fri May 12 02:52:40 2023 +0200
+
+    don't use unsafe atol
+
+diff --git a/plug-ins/script-fu/libscriptfu/tinyscheme/scheme.c b/plug-ins/script-fu/libscriptfu/tinyscheme/scheme.c
+index 5a3b68e..81e8b0d 100644
+--- a/plug-ins/script-fu/libscriptfu/tinyscheme/scheme.c
++++ b/plug-ins/script-fu/libscriptfu/tinyscheme/scheme.c
+@@ -1256,7 +1256,7 @@ static pointer mk_atom(scheme *sc, char *q) {
+      if(has_dec_point) {
+        return mk_real(sc,g_ascii_strtod(q,NULL));
+      }
+-     return (mk_integer(sc, atol(q)));
++     return (mk_integer(sc, strtol(q, NULL, 10)));
+ }
+ 
+ /* make atom from sharp expr representing constant.
diff --git a/srcpkgs/gimp/patches/brushes.patch b/srcpkgs/gimp/patches/brushes.patch
new file mode 100644
index 00000000000000..47a7c225dd38ea
--- /dev/null
+++ b/srcpkgs/gimp/patches/brushes.patch
@@ -0,0 +1,15 @@
+source: https://github.com/chimera-linux/cports/blob/master/main/gimp/patches/brushes.patch
+
+diff --git a/meson.build b/meson.build
+index daae225..7744671 100644
+--- a/meson.build
++++ b/meson.build
+@@ -378,7 +378,7 @@ lcms_minver       = '2.8'
+ lcms              = dependency('lcms2',              version: '>='+lcms_minver)
+ libmypaint_minver = '1.3.0'
+ libmypaint        = dependency('libmypaint',         version: '>='+libmypaint_minver)
+-mypaint_brushes   = dependency('mypaint-brushes-1.0',version: '>='+libmypaint_minver)
++mypaint_brushes   = dependency('mypaint-brushes-2.0',version: '>='+libmypaint_minver)
+ if not libmypaint.version().version_compare('>=1.4.0')
+   libmypaint_warning='''
+ 
diff --git a/srcpkgs/gimp/patches/fix-cross.patch b/srcpkgs/gimp/patches/fix-cross.patch
deleted file mode 100644
index 0ffcf9b650b987..00000000000000
--- a/srcpkgs/gimp/patches/fix-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
-+++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
-@@ -14,6 +14,7 @@ else
- libm = -lm
- endif
- 
-+libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
- libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
- libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
- libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
-@@ -85,6 +86,7 @@ script_fu_SOURCES = \
- 	scheme-wrapper.h
- 
- LDADD = \
-+	$(libgimpmodule) \
- 	$(libgimpui)		\
- 	$(libgimpwidgets)	\
- 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp/patches/fix-segfault.patch b/srcpkgs/gimp/patches/fix-segfault.patch
deleted file mode 100644
index 5f1a6a6d3fe977..00000000000000
--- a/srcpkgs/gimp/patches/fix-segfault.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
-index 064f2c4..b17d82f 100644
---- a/app/dialogs/dialogs.c
-+++ b/app/dialogs/dialogs.c
-@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
-                                      menu_factory);
-   gimp_dialog_factory_set_singleton (factory);
- 
--  for (i = 0; i < G_N_ELEMENTS (entries); i++)
-+  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
-+    char *name, *blurb;
-+    name = entries[i].name ? gettext(entries[i].name) : NULL;
-+    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
-+
-     gimp_dialog_factory_register_entry (factory,
-                                         entries[i].identifier,
--                                        gettext (entries[i].name),
--                                        gettext (entries[i].blurb),
-+                                        name,
-+                                        blurb,
-                                         entries[i].icon_name,
-                                         entries[i].help_id,
-                                         entries[i].new_func,
-@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
-                                         entries[i].hideable,
-                                         entries[i].image_window,
-                                         entries[i].dockable);
-+  }
- 
-   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
- }
-diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
-index 04bd1b6..12eff51 100644
---- a/app/widgets/gimpactiongroup.c
-+++ b/app/widgets/gimpactiongroup.c
-@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpAction  *action;
--      const gchar *label;
-+      const gchar *label   = NULL;
-       const gchar *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_action_impl_new (entries[i].name, label, tooltip,
-@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
-@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_radio_action_new (entries[i].name, label, tooltip,
-@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
-   for (i = 0; i < n_entries; i++)
-     {
-       GimpEnumAction *action;
--      const gchar    *label;
-+      const gchar    *label   = NULL;
-       const gchar    *tooltip = NULL;
- 
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
- 
-       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_enum_action_new (entries[i].name, label, tooltip,
-@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
-       if (! gimp_action_group_check_unique_action (group, entries[i].name))
-         continue;
- 
--      if (msg_context)
-+       if (msg_context)
-         {
--          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
-+          if (entries[i].label)
-+            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
- 
-           if (entries[i].tooltip)
-             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
-         }
-       else
-         {
--          label   = gettext (entries[i].label);
--          tooltip = gettext (entries[i].tooltip);
-+          if (entries[i].label)
-+            label   = gettext (entries[i].label);
-+          if (entries[i].tooltip)
-+            tooltip = gettext (entries[i].tooltip);
-         }
- 
-       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp/patches/gcc14.patch b/srcpkgs/gimp/patches/gcc14.patch
deleted file mode 100644
index ceae92fa154c82..00000000000000
--- a/srcpkgs/gimp/patches/gcc14.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Fri, 13 Jan 2023 13:29:07 +0100
-Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
-
-Do not call the undeclared exit function.  Implicit function
-declarations are likely not going to be supported by future compilers
-by default, changing the outcome of this configure probe with
-such compilers.
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 03047899841..b8718955471 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
-       ]])],
-       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
-diff --git a/configure b/configure
-index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
---- a/configure
-+++ b/configure
-@@ -28898,17 +28898,17 @@ else $as_nop
- 	  char *shmaddr;
- 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
- 	if (id == -1)
--	  exit (2);
-+	  return 2;
- 	  shmaddr = shmat (id, 0, 0);
- 	  shmctl (id, IPC_RMID, 0);
- 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
- 	  {
- 	    shmdt (shmaddr);
--	    exit (1);
-+	    return 1;
- 	  }
- 	  shmdt (shmaddr);
- 	  shmdt (shmaddr);
--	  exit (0);
-+	  return 0;
- 	}
- 
- _ACEOF
diff --git a/srcpkgs/gimp/patches/libheif-1.18-compat.patch b/srcpkgs/gimp/patches/libheif-1.18-compat.patch
deleted file mode 100644
index e714d25f2bab6b..00000000000000
--- a/srcpkgs/gimp/patches/libheif-1.18-compat.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/configure.ac	2024-08-29 18:28:19.457012043 -0500
-+++ b/configure.ac	2024-08-29 18:28:29.154953488 -0500
-@@ -1843,13 +1843,13 @@
- can_import_avif=no
- can_export_avif=no
- if test "x$have_libheif" = xyes; then
--  can_import_heic=`$PKG_CONFIG --variable=builtin_h265_decoder libheif`
--  can_export_heic=`$PKG_CONFIG --variable=builtin_h265_encoder libheif`
-+  can_import_heic=yes
-+  can_export_heic=yes
-   if test "x$can_import_heic" = xyes; then
-     MIME_TYPES="$MIME_TYPES;image/heif;image/heic"
-   fi
--  can_import_avif=`$PKG_CONFIG --variable=builtin_avif_decoder libheif`
--  can_export_avif=`$PKG_CONFIG --variable=builtin_avif_encoder libheif`
-+  can_import_avif=yes
-+  can_export_avif=yes
-   if test "x$can_import_avif" = xyes; then
-     MIME_TYPES="$MIME_TYPES;image/avif"
-   fi
diff --git a/srcpkgs/gimp/template b/srcpkgs/gimp/template
index a50409d5ce5af1..e124731dac642e 100644
--- a/srcpkgs/gimp/template
+++ b/srcpkgs/gimp/template
@@ -1,34 +1,36 @@
 # Template file for 'gimp'
 pkgname=gimp
-version=2.10.38
-revision=3
-build_style=gnu-configure
-configure_args="--disable-check-update --datadir=/usr/share --disable-python"
-hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
- libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
-makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
- ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
- libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
- libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
- poppler-glib-devel glib-networking libwebp-devel
- libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
-depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+version=3.0.0+rc1
+revision=1
+build_style=meson
+build_helper="gir qemu"
+configure_args="-Dcheck-update=no -Drevision=$revision -Denable-default-bin=enabled
+ -Dbug-report-url=https://github.com/void-linux/void-packages/issues/new/choose"
+hostmakedepends="pkg-config xdg-utils perl libxslt gjs LuaJIT desktop-file-utils
+ AppStream gettext gi-docgen gobject-introspection
+ yelp-tools librsvg-devel glib-devel"
+makedepends="babl-devel gtk+3-devel gegl-devel libgexiv2-devel libgirepository-devel
+ libmypaint-devel mypaint-brushes librsvg-devel glib-networking appstream-glib-devel
+ libXmu-devel ghostscript-devel libmng-devel aalib-devel libXpm-devel libopenexr-devel
+ libwebp-devel libheif-devel poppler-glib-devel libwmf-devel libopenjpeg2-devel
+ libjxl-devel alsa-lib-devel cfitsio-devel python3-gobject-devel libgomp-devel
+ libunwind-devel lua51-lgi"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes python3-gobject"
+checkdepends="xvfb-run dbus"
 short_desc="GNU image manipulation program"
 conf_files="/etc/gimp/${version%%.*}.0/*"
 maintainer="fosslinux <fosslinux@aussies.space>"
 license="GPL-3.0-only"
 homepage="https://www.gimp.org"
-changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
-distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
-checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+distfiles="https://download.gimp.org/gimp/v${version%.*}/gimp-${version/+rc/-RC}.tar.xz"
+checksum=b3d0b264c5e38e789faaf3417003397f3240014c59c7f417f9ca3bd39c5ffb66
 lib32disabled=yes
-no_generic_pkgconfig_link=yes
 
-pre_configure() {
-	NOCONFIGURE=1 autoreconf -fi
-	# don't allow configure to set DATADIRNAME=lib
-	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
-}
+if [ -n "$XBPS_CHECK_PKGS" ]; then
+	configure_args+=" -Dheadless-tests=enabled"
+else
+	configure_args+=" -Dheadless-tests=disabled"
+fi
 
 libgimp_package() {
 	short_desc+=" - runtime libraries"
@@ -38,13 +40,16 @@ libgimp_package() {
 }
 
 gimp-devel_package() {
-	depends="gegl-devel gtk+-devel lcms2-devel libgimp>=${version}_${revision}"
+	depends="libgimp>=${version}_${revision} gegl-devel gtk+3-devel libgexiv2-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove usr/share/gtk-doc
-		vmove usr/share/aclocal
 		vmove "usr/lib/*.so"
+		if [ -z "$CROSS_BUILD" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+			vmove usr/share/doc
+		fi
 	}
 }

From 187a038745e09fc0f24d5eae77849cadc09bc1cd Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 11 Jun 2024 21:46:37 -0400
Subject: [PATCH 04/10] New package: gimp2-2.10.38

---
 common/shlibs                            |   9 ++
 srcpkgs/gimp2-devel                      |   1 +
 srcpkgs/gimp2/INSTALL                    |   8 ++
 srcpkgs/gimp2/patches/fix-cross.patch    |  18 +++
 srcpkgs/gimp2/patches/fix-segfault.patch | 169 +++++++++++++++++++++++
 srcpkgs/gimp2/patches/gcc14.patch        |  63 +++++++++
 srcpkgs/gimp2/template                   |  59 ++++++++
 srcpkgs/gimp2/update                     |   2 +
 srcpkgs/libgimp2                         |   1 +
 9 files changed, 330 insertions(+)
 create mode 120000 srcpkgs/gimp2-devel
 create mode 100644 srcpkgs/gimp2/INSTALL
 create mode 100644 srcpkgs/gimp2/patches/fix-cross.patch
 create mode 100644 srcpkgs/gimp2/patches/fix-segfault.patch
 create mode 100644 srcpkgs/gimp2/patches/gcc14.patch
 create mode 100644 srcpkgs/gimp2/template
 create mode 100644 srcpkgs/gimp2/update
 create mode 120000 srcpkgs/libgimp2

diff --git a/common/shlibs b/common/shlibs
index 734ddc0be32580..88a8966351d72b 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -560,6 +560,15 @@ libwebkit2gtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libjavascriptcoregtk-4.1.so.0 libwebkit2gtk41-2.38.0_1
 libwebkitgtk-6.0.so.4 libwebkitgtk60-2.40.0_1
 libjavascriptcoregtk-6.0.so.1 libwebkitgtk60-2.40.0_1
+libgimp-2.0.so.0 libgimp2-2.10.38_1
+libgimpwidgets-2.0.so.0 libgimp2-2.10.38_1
+libgimpui-2.0.so.0 libgimp2-2.10.38_1
+libgimpbase-2.0.so.0 libgimp2-2.10.38_1
+libgimpthumb-2.0.so.0 libgimp2-2.10.38_1
+libgimpconfig-2.0.so.0 libgimp2-2.10.38_1
+libgimpmath-2.0.so.0 libgimp2-2.10.38_1
+libgimpcolor-2.0.so.0 libgimp2-2.10.38_1
+libgimpmodule-2.0.so.0 libgimp2-2.10.38_1
 libgimp-3.0.so.0 libgimp-2.99.18_1
 libgimpwidgets-3.0.so.0 libgimp-2.99.18_1
 libgimpui-3.0.so.0 libgimp-2.99.18_1
diff --git a/srcpkgs/gimp2-devel b/srcpkgs/gimp2-devel
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/gimp2-devel
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file
diff --git a/srcpkgs/gimp2/INSTALL b/srcpkgs/gimp2/INSTALL
new file mode 100644
index 00000000000000..87064d64438f00
--- /dev/null
+++ b/srcpkgs/gimp2/INSTALL
@@ -0,0 +1,8 @@
+# workaround for https://github.com/void-linux/xbps/issues/14
+case "${ACTION}" in
+pre)
+	if [ "$UPDATE" = "yes" ]; then
+		xbps-query -f gimp | grep "usr/lib/gimp/2.0/plug-ins" | sed -e 's|/||' | xargs rm
+	fi
+	;;
+esac
diff --git a/srcpkgs/gimp2/patches/fix-cross.patch b/srcpkgs/gimp2/patches/fix-cross.patch
new file mode 100644
index 00000000000000..0ffcf9b650b987
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-cross.patch
@@ -0,0 +1,18 @@
+--- a/plug-ins/script-fu/Makefile.am	2018-05-18 00:03:53.095184079 +0200
++++ b/plug-ins/script-fu/Makefile.am	2018-05-18 00:04:50.184762769 +0200
+@@ -14,6 +14,7 @@ else
+ libm = -lm
+ endif
+ 
++libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
+ libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la
+ libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la
+ libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la
+@@ -85,6 +86,7 @@ script_fu_SOURCES = \
+ 	scheme-wrapper.h
+ 
+ LDADD = \
++	$(libgimpmodule) \
+ 	$(libgimpui)		\
+ 	$(libgimpwidgets)	\
+ 	$(libgimpconfig)	\
diff --git a/srcpkgs/gimp2/patches/fix-segfault.patch b/srcpkgs/gimp2/patches/fix-segfault.patch
new file mode 100644
index 00000000000000..5f1a6a6d3fe977
--- /dev/null
+++ b/srcpkgs/gimp2/patches/fix-segfault.patch
@@ -0,0 +1,169 @@
+diff --git app/dialogs/dialogs.c app/dialogs/dialogs.c
+index 064f2c4..b17d82f 100644
+--- a/app/dialogs/dialogs.c
++++ b/app/dialogs/dialogs.c
+@@ -534,11 +534,15 @@ dialogs_init (Gimp            *gimp,
+                                      menu_factory);
+   gimp_dialog_factory_set_singleton (factory);
+ 
+-  for (i = 0; i < G_N_ELEMENTS (entries); i++)
++  for (i = 0; i < G_N_ELEMENTS (entries); i++) {
++    char *name, *blurb;
++    name = entries[i].name ? gettext(entries[i].name) : NULL;
++    blurb = entries[i].blurb ? gettext(entries[i].blurb) : NULL;
++
+     gimp_dialog_factory_register_entry (factory,
+                                         entries[i].identifier,
+-                                        gettext (entries[i].name),
+-                                        gettext (entries[i].blurb),
++                                        name,
++                                        blurb,
+                                         entries[i].icon_name,
+                                         entries[i].help_id,
+                                         entries[i].new_func,
+@@ -551,6 +555,7 @@ dialogs_init (Gimp            *gimp,
+                                         entries[i].hideable,
+                                         entries[i].image_window,
+                                         entries[i].dockable);
++  }
+ 
+   global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE);
+ }
+diff --git app/widgets/gimpactiongroup.c app/widgets/gimpactiongroup.c
+index 04bd1b6..12eff51 100644
+--- a/app/widgets/gimpactiongroup.c
++++ b/app/widgets/gimpactiongroup.c
+@@ -393,7 +393,7 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpAction  *action;
+-      const gchar *label;
++      const gchar *label   = NULL;
+       const gchar *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -401,15 +401,18 @@ gimp_action_group_add_actions (GimpActionGroup       *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_action_impl_new (entries[i].name, label, tooltip,
+@@ -450,15 +453,18 @@ gimp_action_group_add_toggle_actions (GimpActionGroup             *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_toggle_action_new (entries[i].name, label, tooltip,
+@@ -504,17 +510,20 @@ gimp_action_group_add_radio_actions (GimpActionGroup            *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_radio_action_new (entries[i].name, label, tooltip,
+@@ -560,7 +569,7 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+   for (i = 0; i < n_entries; i++)
+     {
+       GimpEnumAction *action;
+-      const gchar    *label;
++      const gchar    *label   = NULL;
+       const gchar    *tooltip = NULL;
+ 
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+@@ -568,15 +577,18 @@ gimp_action_group_add_enum_actions (GimpActionGroup           *group,
+ 
+       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_enum_action_new (entries[i].name, label, tooltip,
+@@ -618,17 +630,20 @@ gimp_action_group_add_string_actions (GimpActionGroup             *group,
+       if (! gimp_action_group_check_unique_action (group, entries[i].name))
+         continue;
+ 
+-      if (msg_context)
++       if (msg_context)
+         {
+-          label = g_dpgettext2 (NULL, msg_context, entries[i].label);
++          if (entries[i].label)
++            label = g_dpgettext2 (NULL, msg_context, entries[i].label);
+ 
+           if (entries[i].tooltip)
+             tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip);
+         }
+       else
+         {
+-          label   = gettext (entries[i].label);
+-          tooltip = gettext (entries[i].tooltip);
++          if (entries[i].label)
++            label   = gettext (entries[i].label);
++          if (entries[i].tooltip)
++            tooltip = gettext (entries[i].tooltip);
+         }
+ 
+       action = gimp_string_action_new (entries[i].name, label, tooltip,
diff --git a/srcpkgs/gimp2/patches/gcc14.patch b/srcpkgs/gimp2/patches/gcc14.patch
new file mode 100644
index 00000000000000..ceae92fa154c82
--- /dev/null
+++ b/srcpkgs/gimp2/patches/gcc14.patch
@@ -0,0 +1,63 @@
+From 99531e73e95bf6de4aed9bf64ac3f306e6dfb490 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 13 Jan 2023 13:29:07 +0100
+Subject: [PATCH] configure.ac: Improve C99 compatibility of IPC_RMID check
+
+Do not call the undeclared exit function.  Implicit function
+declarations are likely not going to be supported by future compilers
+by default, changing the outcome of this configure probe with
+such compilers.
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03047899841..b8718955471 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1254,17 +1254,17 @@ elif test "x$shmtype" = "xsysv"; then
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+       ]])],
+       [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
+diff --git a/configure b/configure
+index 6e62da8e3c164f82..f1c447baf7ff68f7 100755
+--- a/configure
++++ b/configure
+@@ -28898,17 +28898,17 @@ else $as_nop
+ 	  char *shmaddr;
+ 	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ 	if (id == -1)
+-	  exit (2);
++	  return 2;
+ 	  shmaddr = shmat (id, 0, 0);
+ 	  shmctl (id, IPC_RMID, 0);
+ 	  if ((char*) shmat (id, 0, 0) == (char*) -1)
+ 	  {
+ 	    shmdt (shmaddr);
+-	    exit (1);
++	    return 1;
+ 	  }
+ 	  shmdt (shmaddr);
+ 	  shmdt (shmaddr);
+-	  exit (0);
++	  return 0;
+ 	}
+ 
+ _ACEOF
diff --git a/srcpkgs/gimp2/template b/srcpkgs/gimp2/template
new file mode 100644
index 00000000000000..6e4cd9a04cd410
--- /dev/null
+++ b/srcpkgs/gimp2/template
@@ -0,0 +1,59 @@
+# Template file for 'gimp2'
+pkgname=gimp2
+version=2.10.38
+revision=1
+build_style=gnu-configure
+configure_args="--disable-check-update --datadir=/usr/share --disable-python
+ --disable-default-binary"
+hostmakedepends="automake gegl gettext-devel glib-devel gtk+-devel intltool
+ libtool pkg-config perl-XML-Parser gtk-doc iso-codes"
+makedepends="aalib-devel alsa-lib-devel babl-devel dbus-glib-devel gegl-devel
+ ghostscript-devel jasper-devel lcms2-devel libXcursor-devel libXpm-devel
+ libgexiv2-devel libgudev-devel libmng-devel libmypaint-devel
+ libopenexr-devel librsvg-devel libwmf-devel mypaint-brushes1
+ poppler-glib-devel glib-networking libwebp-devel
+ libheif-devel libopenjpeg2-devel x265-devel gtk+-devel"
+depends="desktop-file-utils hicolor-icon-theme iso-codes mypaint-brushes1"
+short_desc="GNU image manipulation program (version 2.x)"
+conf_files="/etc/gimp/${version%%.*}.0/*"
+maintainer="fosslinux <fosslinux@aussies.space>"
+license="GPL-3.0-only"
+homepage="https://www.gimp.org"
+changelog="https://gitlab.gnome.org/GNOME/gimp/-/raw/gimp-2-10/NEWS"
+distfiles="https://download.gimp.org/pub/gimp/v${version%.*}/gimp-${version}.tar.bz2"
+checksum=50a845eec11c8831fe8661707950f5b8446e35f30edfb9acf98f85c1133f856e
+lib32disabled=yes
+no_generic_pkgconfig_link=yes
+
+pre_configure() {
+	NOCONFIGURE=1 autoreconf -fi
+	# don't allow configure to set DATADIRNAME=lib
+	vsed -i 's/DATADIRNAME=lib/DATADIRNAME=share/' configure
+}
+
+post_install() {
+	vsed -i -e "s/^Name.*$/& ${version%.*}/" -e "s/^Icon.*$/&-${version%.*}/" "${DESTDIR}/usr/share/applications/gimp.desktop"
+	mv "${DESTDIR}/usr/share/applications/gimp.desktop" "${DESTDIR}/usr/share/applications/gimp-${version%.*}.desktop"
+	find "${DESTDIR}/usr/share/icons/hicolor" -name gimp.png -execdir mv {} "gimp-${version%.*}.png" \;
+	vsed -i -e "s/org.gimp.GIMP/&${version%%.*}/" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml"
+	mv "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP.appdata.xml" "${DESTDIR}/usr/share/metainfo/org.gimp.GIMP${version%%.*}.appdata.xml"
+}
+
+libgimp2_package() {
+	short_desc+=" - runtime libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+	}
+}
+
+gimp2-devel_package() {
+	depends="gegl-devel gtk+-devel lcms2-devel libgimp2>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/pkgconfig
+		vmove usr/share/gtk-doc
+		vmove usr/share/aclocal
+		vmove "usr/lib/*.so"
+	}
+}
diff --git a/srcpkgs/gimp2/update b/srcpkgs/gimp2/update
new file mode 100644
index 00000000000000..0e2a52581a8290
--- /dev/null
+++ b/srcpkgs/gimp2/update
@@ -0,0 +1,2 @@
+pkgname=gimp
+ignore="*.99.*"
diff --git a/srcpkgs/libgimp2 b/srcpkgs/libgimp2
new file mode 120000
index 00000000000000..cae4fa79d617de
--- /dev/null
+++ b/srcpkgs/libgimp2
@@ -0,0 +1 @@
+gimp2
\ No newline at end of file

From 67f1829376bb39e49a2ecd103b1265a5398c1828 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:08 -0400
Subject: [PATCH 05/10] libjxl: rebuild against libgimp2

gimp 3 supports jxl now, and this would cause a dependency loop
---
 srcpkgs/libjxl/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libjxl/template b/srcpkgs/libjxl/template
index bdf38b2432761f..3d054b570a7662 100644
--- a/srcpkgs/libjxl/template
+++ b/srcpkgs/libjxl/template
@@ -1,7 +1,7 @@
 # Template file for 'libjxl'
 pkgname=libjxl
 version=0.10.3
-revision=2
+revision=3
 _testdata_hash=ff8d743aaba05b3014f17e5475e576242fa979fc
 build_style=cmake
 configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
@@ -9,7 +9,7 @@ configure_args="-DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF
  -DJPEGXL_ENABLE_SKCMS=OFF"
 hostmakedepends="tar pkg-config asciidoc"
 makedepends="brotli-devel highway-devel libpng-devel giflib-devel libjpeg-turbo-devel
- libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp-devel lcms2-devel"
+ libopenexr-devel libwebp-devel gdk-pixbuf-devel gimp2-devel lcms2-devel"
 checkdepends="gtest-devel xdg-utils"
 short_desc="JPEG XL image format reference implementation"
 maintainer="Joshua Krämer <joshua@kraemer.link>"

From 7a1fbc4099562a5dd60dfa37ac2e95be6204e46c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:09 -0400
Subject: [PATCH 06/10] gmic: rebuild against libgimp2

---
 srcpkgs/gmic/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gmic/template b/srcpkgs/gmic/template
index 24d10147e3abad..a691c6231bb70e 100644
--- a/srcpkgs/gmic/template
+++ b/srcpkgs/gmic/template
@@ -9,10 +9,10 @@ build_style=gnu-makefile
 build_helper=qmake
 make_build_args="NOSTRIP=yes"
 make_use_env=yes
-hostmakedepends="pkg-config gimp qt5-host-tools qt5-qmake"
+hostmakedepends="pkg-config gimp2 qt5-host-tools qt5-qmake"
 makedepends="fftw-devel imath-devel libopenexr-devel MesaLib-devel libopencv-devel
  libgomp-devel lcms2-devel libpng-devel libjpeg-turbo-devel tiff-devel libcurl-devel
- gtk+-devel gimp-devel qt5-devel"
+ gtk+-devel gimp2-devel qt5-devel"
 short_desc="GREYC's Magic for Image Computing (image processing framework)"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="CECILL-2.1, CECILL-C"
@@ -33,8 +33,8 @@ post_install() {
 }
 
 gmic-gimp_package() {
-	short_desc+=" - GIMP plugin"
-	depends="gimp ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From e46b6e21d6e390ce9e9a5849c446743067c4a5c2 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:10 -0400
Subject: [PATCH 07/10] nufraw: rebuild against libgimp2

---
 srcpkgs/nufraw/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/nufraw/template b/srcpkgs/nufraw/template
index 551f263df96d38..8748aa91afc779 100644
--- a/srcpkgs/nufraw/template
+++ b/srcpkgs/nufraw/template
@@ -1,7 +1,7 @@
 # Template file for 'nufraw'
 pkgname=nufraw
 version=0.43.3
-revision=1
+revision=2
 _ver="${version%.*}-${version##*.}"
 build_style=gnu-configure
 configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
@@ -9,7 +9,7 @@ configure_args="--enable-contrast --enable-mime --enable-openmp --with-gimp
 hostmakedepends="pkg-config automake libtool glib-devel"
 # libgexiv2-devel is only here to fix build order, remove on next template
 # change
-makedepends="exiv2-devel gimp-devel glib-devel gtkimageview-devel lcms2-devel
+makedepends="exiv2-devel gimp2-devel glib-devel gtkimageview-devel lcms2-devel
  lensfun-devel jasper-devel libgexiv2-devel"
 depends="desktop-file-utils"
 short_desc="Utility to read and manipulate raw images from digital cameras"
@@ -18,6 +18,7 @@ license="GPL-2.0-or-later"
 homepage="https://sourceforge.net/projects/nufraw/"
 distfiles="${SOURCEFORGE_SITE}/nufraw/nufraw-${_ver}.tar.gz"
 checksum=2c7dcc1590993ec267b3112562b2433010d6f94f6acc6506c76aa29cf8c6c32c
+conflicts="dcraw>=0"
 
 case "$XBPS_TARGET_MACHINE" in
 	armv[67]l* | aarch64* | riscv64*)
@@ -36,8 +37,8 @@ pre_build() {
 }
 
 nufraw-gimp_package() {
-	depends="${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - gimp plugin"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - GIMP 2 plugin"
 	pkg_install() {
 		vmove usr/lib/gimp
 	}

From 8790ff8d3872b9e44c753fc8ab0fc93ab70d7ee9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 08/10] xsane: rebuild against libgimp2

---
 srcpkgs/xsane/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/xsane/template b/srcpkgs/xsane/template
index 7dde32af2b674c..67c53e94489fab 100644
--- a/srcpkgs/xsane/template
+++ b/srcpkgs/xsane/template
@@ -1,9 +1,9 @@
 # Template file for 'xsane'
 pkgname=xsane
 version=0.999
-revision=5
+revision=6
 hostmakedepends="pkg-config sane-devel gettext"
-makedepends="gtk+-devel lcms-devel sane-devel gimp-devel"
+makedepends="gtk+-devel lcms-devel sane-devel gimp2-devel"
 depends="sane"
 short_desc="GTK-based X11 frontend for SANE"
 maintainer="Orphaned <orphan@voidlinux.org>"
@@ -36,8 +36,8 @@ do_install() {
 }
 
 xsane-gimp_package() {
-	short_desc+=" - plugin for GIMP"
-	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - plugin for GIMP 2"
+	depends="gimp2 ${sourcepkg}>=${version}_${revision}"
 	pkg_install() {
 		vbin src/xsane-gimp
 		vmkdir usr/lib/gimp/2.0/plug-ins

From 290b6464100f6bb1bd2f4b7f5c0c8b1db524e158 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 02:44:11 -0400
Subject: [PATCH 09/10] gimp-lqr-plugin: rebuild against libgimp2

---
 srcpkgs/gimp-lqr-plugin/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gimp-lqr-plugin/template b/srcpkgs/gimp-lqr-plugin/template
index 7878f6cb795d24..33a395c67a8583 100644
--- a/srcpkgs/gimp-lqr-plugin/template
+++ b/srcpkgs/gimp-lqr-plugin/template
@@ -1,11 +1,12 @@
 # Template file for 'gimp-lqr-plugin'
 pkgname=gimp-lqr-plugin
 version=0.7.2
-revision=2
+revision=3
 build_style=gnu-configure
 hostmakedepends="automake intltool pkg-config"
-makedepends="gimp-devel glib-devel gettext-devel liblqr-devel"
-short_desc="Gimp plugins for image resizing through seam carving"
+makedepends="gimp2-devel glib-devel gettext-devel liblqr-devel"
+depends="gimp2"
+short_desc="GIMP 2 plugins for image resizing through seam carving"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
 homepage="http://liquidrescale.wikidot.com/"

From bc6ea98f61d36be0d516cd6f302f441540f87c97 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 18 Apr 2024 03:22:14 -0400
Subject: [PATCH 10/10] resynthesizer: update to 2.0.3+3.

WIP gimp 3 port
---
 srcpkgs/resynthesizer/template | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/srcpkgs/resynthesizer/template b/srcpkgs/resynthesizer/template
index a58b0eec995854..271cc419fd005a 100644
--- a/srcpkgs/resynthesizer/template
+++ b/srcpkgs/resynthesizer/template
@@ -1,26 +1,15 @@
 # Template file for 'resynthesizer'
 pkgname=resynthesizer
-version=2.0.3+1
+version=2.0.3+3
 revision=1
-_commit=701e890d1d456e215e05daa7b4a88f5d9c6c03b3
-build_style=gnu-configure
-hostmakedepends="automake intltool pkg-config"
+_commit=12a967da9d723321b06e37c2b601cb77c320aedd
+build_style=meson
+hostmakedepends="pkg-config"
 makedepends="gimp-devel glib-devel gettext-devel"
-short_desc="Suite of gimp plugins for texture healing and synthesis"
+depends="gimp"
+short_desc="Suite of GIMP plugins for texture healing and synthesis"
 maintainer="CoolOhm <micvlas@gmail.com>"
 license="GPL-2.0-or-later"
-# FIXME: when gimp 3 is available, switch back to bootchk upstream
-#homepage="https://github.com/bootchk/resynthesizer"
-#distfiles="https://github.com/bootchk/resynthesizer/archive/refs/tags/v${version}.tar.gz"
-homepage="https://github.com/itr-tert/gimp-resynthesizer-scm"
-distfiles="https://github.com/itr-tert/gimp-resynthesizer-scm/archive/${_commit}.tar.gz"
-checksum=298286386466fbd6d2da06f8a920c6e6e313db7ca0a094a36a355978a64cefc0
-
-if [ "$CROSS_BUILD" ];then
-	hostmakedepends+=" glib-devel gettext-devel"
-	AUTOGEN_CONFIGURE_ARGS+=" --host=${XBPS_MACHINE%-musl} --build=${XBPS_CROSS_TRIPLET}"
-fi
-
-pre_configure() {
-	./autogen.sh ${AUTOGEN_CONFIGURE_ARGS}
-}
+homepage="https://github.com/bootchk/resynthesizer"
+distfiles="https://github.com/bootchk/resynthesizer/archive/${_commit}.tar.gz"
+checksum=de92e808b7415e44c8b6305f2e2e7985269dfc774d00ad06ee323d243f51bef8

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2024-11-07 20:54 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-18  7:24 [PR PATCH] GIMP 3 classabbyamp
2024-04-18  7:26 ` [PR REVIEW] " classabbyamp
2024-04-18  7:26 ` classabbyamp
2024-04-21 20:02 ` [PR PATCH] [Updated] " classabbyamp
2024-06-12  2:23 ` classabbyamp
2024-06-12  2:28 ` classabbyamp
2024-06-12  5:21 ` classabbyamp
2024-06-12  6:50 ` classabbyamp
2024-09-11  1:56 ` github-actions
2024-10-26  4:39 ` [PR PATCH] [Updated] " classabbyamp
2024-10-26  4:48 ` classabbyamp
2024-10-26 11:53 ` classabbyamp
2024-11-07 20:54 ` classabbyamp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).