diff --git a/.gimp.metadata b/.gimp.metadata index 1e57f28..f581ad9 100644 --- a/.gimp.metadata +++ b/.gimp.metadata @@ -1 +1 @@ -79324eeafe2b63fe7f2b1637e57b683695af8f05 SOURCES/gimp-2.99.8.tar.bz2 +f7c52adcf5c8ab3e858ac776d3b7cedd1f94a891 SOURCES/gimp-3.0.4.tar.xz diff --git a/.gitignore b/.gitignore index a4c3253..f076292 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/gimp-2.99.8.tar.bz2 +SOURCES/gimp-3.0.4.tar.xz diff --git a/SOURCES/gimp-2.10.0-cm-system-monitor-profile-by-default.patch b/SOURCES/gimp-2.10.0-cm-system-monitor-profile-by-default.patch deleted file mode 100644 index 35493af..0000000 --- a/SOURCES/gimp-2.10.0-cm-system-monitor-profile-by-default.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -up gimp-2.10.14/etc/gimprc.in.cm-system-monitor-profile-by-default gimp-2.10.14/etc/gimprc.in ---- gimp-2.10.14/etc/gimprc.in.cm-system-monitor-profile-by-default 2019-10-26 21:46:48.000000000 +0200 -+++ gimp-2.10.14/etc/gimprc.in 2019-11-04 13:17:23.322750636 +0100 -@@ -317,9 +317,9 @@ - - # Defines the color management behavior. This is a parameter list. - # --# (color-management -+(color-management - # (mode display) --# (display-profile-from-gdk no) -+ (display-profile-from-gdk no) - # (display-rendering-intent relative-colorimetric) - # (display-use-black-point-compensation yes) - # (display-optimize yes) -@@ -328,7 +328,8 @@ - # (simulation-optimize yes) - # (simulation-gamut-check no) - # (out-of-gamut-color (color-rgb 1 0 1)) --# (display-module "CdisplayLcms")) -+# (display-module "CdisplayLcms") -+) - - # Keep a permanent record of all opened and saved files in the Recent - # Documents list. Possible values are yes and no. diff --git a/SOURCES/gimp-2.10.18-no-phone-home-default.patch b/SOURCES/gimp-2.10.18-no-phone-home-default.patch deleted file mode 100644 index 2054b4a..0000000 --- a/SOURCES/gimp-2.10.18-no-phone-home-default.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up gimp-2.10.18/etc/gimprc.in.no-phone-home-default gimp-2.10.18/etc/gimprc.in ---- gimp-2.10.18/etc/gimprc.in.no-phone-home-default 2020-02-23 21:15:47.217777581 +0100 -+++ gimp-2.10.18/etc/gimprc.in 2020-02-23 21:22:42.416162110 +0100 -@@ -393,7 +393,7 @@ - # Check for availability of GIMP updates through background internet queries. - # Possible values are yes and no. - # --# (check-updates yes) -+(check-updates no) - - # Timestamp of the last update check. (null) - # diff --git a/SOURCES/gimp-2.10.24-external-help-browser.patch b/SOURCES/gimp-2.10.24-external-help-browser.patch deleted file mode 100644 index 09f4118..0000000 --- a/SOURCES/gimp-2.10.24-external-help-browser.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up gimp-2.10.24/etc/gimprc.in.external-help-browser gimp-2.10.24/etc/gimprc.in ---- gimp-2.10.24/etc/gimprc.in.external-help-browser 2021-04-03 00:02:39.312656132 +0200 -+++ gimp-2.10.24/etc/gimprc.in 2021-04-03 00:03:27.360453285 +0200 -@@ -836,7 +836,7 @@ - # Sets the browser used by the help system. Possible values are gimp and - # web-browser. - # --# (help-browser web-browser) -+(help-browser web-browser) - - # When enabled, a search of actions will also return inactive actions. - # Possible values are yes and no. diff --git a/SOURCES/gimp-3.0.2-cm-system-monitor-profile-by-default.patch b/SOURCES/gimp-3.0.2-cm-system-monitor-profile-by-default.patch new file mode 100644 index 0000000..9944a6a --- /dev/null +++ b/SOURCES/gimp-3.0.2-cm-system-monitor-profile-by-default.patch @@ -0,0 +1,26 @@ +diff -urNp old/etc/gimprc.in new/etc/gimprc.in +--- old/etc/gimprc.in 2025-05-02 16:05:59.766235164 +0200 ++++ new/etc/gimprc.in 2025-05-02 16:08:52.117193144 +0200 +@@ -316,9 +316,9 @@ + + # Defines the color management behavior. This is a parameter list. + # +-# (color-management ++ (color-management + # (mode display) +-# (display-profile-from-gdk no) ++ (display-profile-from-gdk no) + # (display-rendering-intent relative-colorimetric) + # (display-use-black-point-compensation yes) + # (display-optimize yes) +@@ -326,7 +326,9 @@ + # (simulation-use-black-point-compensation no) + # (simulation-optimize yes) + # (simulation-gamut-check no) +-# (out-of-gamut-color (color-rgb 1 0 1))) ++# (out-of-gamut-color (color-rgb 1 0 1)) ++ (display-module "CdisplayLcms") ++) + + # Keep a permanent record of all opened and saved files in the Recent + # Documents list. Possible values are yes and no. diff --git a/SOURCES/gimp-3.0.2-external-help-browser.patch b/SOURCES/gimp-3.0.2-external-help-browser.patch new file mode 100644 index 0000000..e7f229c --- /dev/null +++ b/SOURCES/gimp-3.0.2-external-help-browser.patch @@ -0,0 +1,12 @@ +diff -urNp old/etc/gimprc.in new/etc/gimprc.in +--- old/etc/gimprc.in 2025-05-02 16:10:40.807797273 +0200 ++++ new/etc/gimprc.in 2025-05-02 16:12:22.380006468 +0200 +@@ -824,7 +824,7 @@ + # Sets the browser used by the help system. Possible values are gimp and + # web-browser. + # +-# (help-browser gimp) ++(help-browser web-browser) + + # The maximum number of actions saved in history. This is an integer value. + # diff --git a/SOURCES/gimp-3.0.4-glib.patch b/SOURCES/gimp-3.0.4-glib.patch new file mode 100644 index 0000000..8c8ade8 --- /dev/null +++ b/SOURCES/gimp-3.0.4-glib.patch @@ -0,0 +1,153 @@ +diff -urNp a/app/core/gimpimage-colormap.c b/app/core/gimpimage-colormap.c +--- a/app/core/gimpimage-colormap.c 2025-05-20 09:08:24.351925471 +0200 ++++ b/app/core/gimpimage-colormap.c 2025-05-20 09:20:42.372348093 +0200 +@@ -328,9 +328,8 @@ gimp_image_colormap_is_index_used (GimpI + num_processors = GIMP_GEGL_CONFIG (image->gimp->config)->num_processors; + layers = gimp_image_get_layer_list (image); + +- pool = g_thread_pool_new_full ((GFunc) gimp_image_colormap_thread_is_index_used, ++ pool = g_thread_pool_new ((GFunc) gimp_image_colormap_thread_is_index_used, + GINT_TO_POINTER (color_index), +- (GDestroyNotify) g_free, + num_processors, TRUE, NULL); + for (iter = layers; iter; iter = g_list_next (iter)) + { +diff -urNp a/app/core/gimpitemlist.c b/app/core/gimpitemlist.c +--- a/app/core/gimpitemlist.c 2025-05-20 09:08:24.354925484 +0200 ++++ b/app/core/gimpitemlist.c 2025-05-20 09:20:03.980745485 +0200 +@@ -629,7 +629,7 @@ gimp_item_list_get_items_by_glob (GimpIt + spec = g_pattern_spec_new (pattern); + for (iter = items; iter; iter = iter->next) + { +- if (g_pattern_spec_match_string (spec, gimp_object_get_name (iter->data))) ++ if (g_pattern_match_string (spec, gimp_object_get_name (iter->data))) + match = g_list_prepend (match, iter->data); + } + g_pattern_spec_free (spec); +diff -urNp a/app/plug-in/gimpplugin.c b/app/plug-in/gimpplugin.c +--- a/app/plug-in/gimpplugin.c 2025-05-20 09:08:24.339925418 +0200 ++++ b/app/plug-in/gimpplugin.c 2025-05-20 09:19:19.516679552 +0200 +@@ -403,7 +403,7 @@ gimp_plug_in_close_waitpid (GPid + GError *error = NULL; + + if (plug_in->manager->gimp->be_verbose && +- ! g_spawn_check_wait_status (status, &error)) ++ ! g_spawn_check_exit_status (status, &error)) + { + g_printerr ("Process for plug-in '%s' terminated with error: %s\n", + gimp_object_get_name (plug_in), +diff -urNp a/app/sanity.c b/app/sanity.c +--- a/app/sanity.c 2025-05-20 09:08:24.395925663 +0200 ++++ b/app/sanity.c 2025-05-20 09:18:48.132179032 +0200 +@@ -171,7 +171,7 @@ static gchar * + sanity_check_glib (void) + { + #define GLIB_REQUIRED_MAJOR 2 +-#define GLIB_REQUIRED_MINOR 70 ++#define GLIB_REQUIRED_MINOR 68 + #define GLIB_REQUIRED_MICRO 0 + + const gchar *mismatch = glib_check_version (GLIB_REQUIRED_MAJOR, +diff -urNp a/app/text/gimptext.c b/app/text/gimptext.c +--- a/app/text/gimptext.c 2025-05-20 09:08:24.397925671 +0200 ++++ b/app/text/gimptext.c 2025-05-20 09:16:10.900785765 +0200 +@@ -827,7 +827,8 @@ gimp_text_serialize_property (GimpConfig + + for (guint i = 0; i < length; ++i) + { +- PangoAttrFontDesc *attr_font_desc = pango_attribute_as_font_desc ((PangoAttribute*)g_slist_nth_data (list, i)); ++ PangoAttrFontDesc *attr_font_desc = (((PangoAttribute*)g_slist_nth_data (list, i))->klass->type == PANGO_ATTR_FONT_DESC ++ ? (PangoAttrFontDesc *)g_slist_nth_data (list, i) : NULL ); + + if (attr_font_desc != NULL) + { +diff -urNp a/app/text/gimptext-parasite.c b/app/text/gimptext-parasite.c +--- a/app/text/gimptext-parasite.c 2025-05-20 09:08:24.397925671 +0200 ++++ b/app/text/gimptext-parasite.c 2025-05-20 09:15:33.606149497 +0200 +@@ -131,7 +131,8 @@ gimp_text_from_parasite (const GimpParas + + for (guint i = 0; i < length; ++i) + { +- PangoAttrFontDesc *attr_font_desc = pango_attribute_as_font_desc ((PangoAttribute*)g_slist_nth_data (list, i)); ++ PangoAttrFontDesc *attr_font_desc = (((PangoAttribute*)g_slist_nth_data (list, i))->klass->type == PANGO_ATTR_FONT_DESC ++ ? (PangoAttrFontDesc *)g_slist_nth_data (list, i) : NULL ); + + if (attr_font_desc != NULL) + { +diff -urNp a/app/xcf/xcf-save.c b/app/xcf/xcf-save.c +--- a/app/xcf/xcf-save.c 2025-05-20 09:08:24.399171071 +0200 ++++ b/app/xcf/xcf-save.c 2025-05-20 09:14:35.628966564 +0200 +@@ -2389,9 +2389,8 @@ xcf_save_level (XcfInfo *info, + * i.e. there is a bug in our code. + */ + queue = g_async_queue_new_full ((GDestroyNotify) xcf_save_free_job_data); +- pool = g_thread_pool_new_full ((GFunc) xcf_save_tile_parallel, ++ pool = g_thread_pool_new ((GFunc) xcf_save_tile_parallel, + queue, +- (GDestroyNotify) xcf_save_free_job_data, + num_processors, TRUE, NULL); + + i = 0; +diff -urNp a/libgimp/gimpvectorloadprocedure.c b/libgimp/gimpvectorloadprocedure.c +--- a/libgimp/gimpvectorloadprocedure.c 2025-05-20 09:08:24.489926072 +0200 ++++ b/libgimp/gimpvectorloadprocedure.c 2025-05-20 09:13:46.148798654 +0200 +@@ -370,7 +370,7 @@ gimp_vector_load_procedure_run (GimpProc + } + } + +- g_prefix_error_literal (&error, _("Vector image loading plug-in failed: ")); ++ //g_prefix_error_literal (&error, _("Vector image loading plug-in failed: ")); + } + + /* One or both dimensions are still zero at this point. */ +diff -urNp a/libgimpbase/gimpchoice.c b/libgimpbase/gimpchoice.c +--- a/libgimpbase/gimpchoice.c 2025-05-20 09:08:24.491384100 +0200 ++++ b/libgimpbase/gimpchoice.c 2025-05-20 09:13:13.230538618 +0200 +@@ -454,7 +454,7 @@ gimp_param_choice_class_init (GParamSpec + klass->value_type = G_TYPE_STRING; + klass->finalize = gimp_param_choice_finalize; + klass->value_validate = gimp_param_choice_validate; +- klass->value_is_valid = gimp_param_choice_value_is_valid; ++ //klass->value_is_valid = gimp_param_choice_value_is_valid; + klass->values_cmp = gimp_param_choice_values_cmp; + } + +diff -urNp a/meson.build b/meson.build +--- a/meson.build 2025-05-20 09:08:24.256925056 +0200 ++++ b/meson.build 2025-05-20 09:12:38.933510408 +0200 +@@ -432,7 +432,7 @@ gio = dependency('gio-2.0' + gio_specific_name = platform_windows ? 'gio-windows-2.0' : 'gio-unix-2.0' + gio_specific = dependency(gio_specific_name) + +-glib_minver = '2.70.0' ++glib_minver = '2.68.0' + glib = dependency('glib-2.0', version: '>='+glib_minver) + gi = dependency('gobject-introspection-1.0') + +@@ -443,7 +443,7 @@ gmodule = dependency('gmodule- + + gtk3_minver = '3.24.0' + gtk3 = dependency('gtk+-3.0', version: '>='+gtk3_minver) +-harfbuzz_minver = '2.8.2' ++harfbuzz_minver = '2.7.4' + harfbuzz = dependency('harfbuzz', version: '>='+harfbuzz_minver) + json_glib_minver = '1.2.6' + json_glib = dependency('json-glib-1.0', version: '>='+json_glib_minver) +@@ -472,7 +472,7 @@ endif + + conf.set_quoted('MYPAINT_BRUSHES_DIR', mypaint_brushes_dir) + +-pango_minver = '1.50.0' ++pango_minver = '1.48.0' + if platform_osx + pango_macos_recommended_version = '1.55.0' + pango_macos_warning=''' +@@ -1837,6 +1837,8 @@ if is_git_repository + endif + endif + ++conf.set('G_DEFINE_FINAL_TYPE(TN, t_n, T_P)', 'G_DEFINE_TYPE(TN, t_n, T_P)') ++ + configure_file( + output: 'config.h', + configuration: conf diff --git a/SOURCES/gimp-CVE-2022-30067.patch b/SOURCES/gimp-CVE-2022-30067.patch deleted file mode 100644 index 94e29d2..0000000 --- a/SOURCES/gimp-CVE-2022-30067.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 4f99f1fcfd892ead19831b5adcd38a99d71214b6 Mon Sep 17 00:00:00 2001 -From: Jacob Boerema -Date: Fri, 29 Apr 2022 16:40:32 -0400 -Subject: [PATCH] app: fix #8120 GIMP 2.10.30 crashed when allocate large - memory - -GIMP could crash if the information regarding old path properties read -from XCF was incorrect. It did not check if xcf_old_path succeeded and -kept trying to load more paths even if the last one failed to load. - -Instead we now stop loading paths as soon as that function fails. -In case we have a failure here we also try to skip to the next property -based on the size of the path property, in hopes that the only problem -was this property. ---- - app/xcf/xcf-load.c | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c -index ac9c4ea248..67bc766390 100644 ---- a/app/xcf/xcf-load.c -+++ b/app/xcf/xcf-load.c -@@ -1168,7 +1168,12 @@ xcf_load_image_props (XcfInfo *info, - break; - - case PROP_PATHS: -- xcf_load_old_paths (info, image); -+ { -+ goffset base = info->cp; -+ -+ if (! xcf_load_old_paths (info, image)) -+ xcf_seek_pos (info, base + prop_size, NULL); -+ } - break; - - case PROP_USER_UNIT: -@@ -3035,8 +3040,11 @@ xcf_load_old_paths (XcfInfo *info, - xcf_read_int32 (info, &last_selected_row, 1); - xcf_read_int32 (info, &num_paths, 1); - -+ GIMP_LOG (XCF, "Number of old paths: %u", num_paths); -+ - while (num_paths-- > 0) -- xcf_load_old_path (info, image); -+ if (! xcf_load_old_path (info, image)) -+ return FALSE; - - active_vectors = - GIMP_VECTORS (gimp_container_get_child_by_index (gimp_image_get_vectors (image), -@@ -3087,7 +3095,7 @@ xcf_load_old_path (XcfInfo *info, - } - else if (version != 1) - { -- g_printerr ("Unknown path type. Possibly corrupt XCF file"); -+ g_printerr ("Unknown path type (version: %u). Possibly corrupt XCF file.\n", version); - - g_free (name); - return FALSE; --- -GitLab diff --git a/SOURCES/gimp-CVE-2022-32990.patch b/SOURCES/gimp-CVE-2022-32990.patch deleted file mode 100644 index 24e1515..0000000 --- a/SOURCES/gimp-CVE-2022-32990.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 22af0bcfe67c1c86381f33975ca7fdbde6b36b39 Mon Sep 17 00:00:00 2001 -From: Jacob Boerema -Date: Sun, 5 Jun 2022 15:38:24 -0400 -Subject: [PATCH] app: fix #8230 crash in gimp_layer_invalidate_boundary when - channel is NULL - -gimp_channel_is_empty returns FALSE if channel is NULL. This causes -gimp_layer_invalidate_boundary to crash if the mask channel is NULL. - -With a NULL channel gimp_channel_is_empty should return TRUE, just like -the similar gimp_image_is_empty does, because returning FALSE here -suggests we have a non empty channel. ---- - app/core/gimpchannel.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/app/core/gimpchannel.c b/app/core/gimpchannel.c -index 7b6a9851ae..502821ba58 100644 ---- a/app/core/gimpchannel.c -+++ b/app/core/gimpchannel.c -@@ -1827,7 +1827,7 @@ gimp_channel_boundary (GimpChannel *channel, - gboolean - gimp_channel_is_empty (GimpChannel *channel) - { -- g_return_val_if_fail (GIMP_IS_CHANNEL (channel), FALSE); -+ g_return_val_if_fail (GIMP_IS_CHANNEL (channel), TRUE); - - return GIMP_CHANNEL_GET_CLASS (channel)->is_empty (channel); - } --- -GitLab diff --git a/SOURCES/gimp-remove-lua.patch b/SOURCES/gimp-remove-lua.patch deleted file mode 100644 index 9e8d712..0000000 --- a/SOURCES/gimp-remove-lua.patch +++ /dev/null @@ -1,371 +0,0 @@ -diff -urNp a/extensions/goat-exercises/goat-exercise-lua.lua b/extensions/goat-exercises/goat-exercise-lua.lua ---- a/extensions/goat-exercises/goat-exercise-lua.lua 2022-03-09 09:39:44.007314944 +0100 -+++ b/extensions/goat-exercises/goat-exercise-lua.lua 1970-01-01 01:00:00.000000000 +0100 -@@ -1,184 +0,0 @@ --#!/usr/bin/env luajit -- ---- GIMP - The GNU Image Manipulation Program ---- Copyright (C) 1995 Spencer Kimball and Peter Mattis ---- ---- goat-exercise-lua.lua ---- Copyright (C) Jehan ---- ---- This program is free software: you can redistribute it and/or modify ---- it under the terms of the GNU General Public License as published by ---- the Free Software Foundation; either version 3 of the License, or ---- (at your option) any later version. ---- ---- This program is distributed in the hope that it will be useful, ---- but WITHOUT ANY WARRANTY; without even the implied warranty of ---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ---- GNU General Public License for more details. ---- ---- You should have received a copy of the GNU General Public License ---- along with this program. If not, see . -- --local lgi = require 'lgi' -- --local GLib = lgi.GLib --local GObject = lgi.GObject --local Gio = lgi.Gio --local Gegl = lgi.Gegl --local Gimp = lgi.Gimp --local GimpUi = lgi.GimpUi --local Gtk = lgi.Gtk --local Gdk = lgi.Gdk -- --local Goat = lgi.package 'Goat' --local Goat = lgi.Goat -- --function run(procedure, run_mode, image, drawables, args, run_data) -- -- procedure:new_return_values() crashes LGI so we construct the -- -- GimpValueArray manually. -- local retval = Gimp.ValueArray(1) -- -- if table.getn(drawables) ~= 1 then -- local calling_err = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CALLING_ERROR) -- local msg = "Procedure '%s' only works with one drawable." -- -- msg = string.format(msg, procedure:get_name()) -- -- retval:append(calling_err) -- retval:append(GObject.Value(GObject.Type.STRING, msg)) -- return retval -- end -- -- local drawable = drawables[1] -- -- -- Not sure why run_mode has become a string instead of testing -- -- against Gimp.RunMode.INTERACTIVE. -- if run_mode == "INTERACTIVE" then -- GimpUi.init("goat-exercise-lua"); -- local dialog = GimpUi.Dialog { -- title = "Exercise a goat (Lua)", -- role = "goat-exercise-Lua", -- use_header_bar = 1 -- } -- dialog:add_button("_Cancel", Gtk.ResponseType.CANCEL); -- dialog:add_button("_Source", Gtk.ResponseType.APPLY); -- dialog:add_button("_OK", Gtk.ResponseType.OK); -- -- local geometry = Gdk.Geometry() -- geometry.min_aspect = 0.5; -- geometry.max_aspect = 1.0; -- dialog:set_geometry_hints (nil, geometry, Gdk.WindowHints.ASPECT); -- -- local box = Gtk.Box { -- orientation = Gtk.Orientation.VERTICAL, -- spacing = 2 -- } -- dialog:get_content_area():add(box) -- box:show() -- -- local lang = "Lua" -- local head_text = "This plug-in is an exercise in '%s' to demo plug-in creation.\n" .. -- "Check out the last version of the source code online by clicking the \"Source\" button." -- -- local label = Gtk.Label { label = string.format(head_text, lang) } -- box:pack_start(label, false, false, 1) -- label:show() -- -- local contents = GLib.file_get_contents(arg[0]) -- if (contents) then -- local scrolled = Gtk.ScrolledWindow() -- scrolled:set_vexpand (true) -- box:pack_start(scrolled, true, true, 1) -- scrolled:show() -- -- local view = Gtk.TextView() -- view:set_wrap_mode(Gtk.WrapMode.WORD) -- view:set_editable(false) -- local buffer = view:get_buffer() -- buffer:set_text(contents, -1) -- scrolled:add(view) -- view:show() -- end -- -- while (true) do -- local response = dialog:run() -- local url = 'https://gitlab.gnome.org/GNOME/gimp/blob/master/extensions/goat-exercises/goat-exercise-lua.lua' -- -- if response == Gtk.ResponseType.OK then -- dialog:destroy() -- break -- elseif (response == Gtk.ResponseType.APPLY) then -- Gio.app_info_launch_default_for_uri(url, nil); -- else -- CANCEL, CLOSE, DELETE_EVENT -- dialog:destroy() -- local cancel = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CANCEL) -- retval:append(cancel) -- return retval -- end -- end -- end -- -- local x, y, width, height = drawable:mask_intersect() -- if width ~= nill and height ~= nil and width > 0 and height > 0 then -- Gegl.init(nil) -- -- local buffer = drawable:get_buffer() -- local shadow_buffer = drawable:get_shadow_buffer() -- -- local graph = Gegl.Node() -- local input = graph:create_child("gegl:buffer-source") -- input:set_property("buffer", GObject.Value(Gegl.Buffer, buffer)) -- local invert = graph:create_child("gegl:invert") -- local output = graph:create_child("gegl:write-buffer") -- output:set_property("buffer", GObject.Value(Gegl.Buffer, shadow_buffer)) -- input:link(invert) -- invert:link(output) -- output:process() -- -- shadow_buffer:flush() -- -- drawable:merge_shadow(true) -- drawable:update(x, y, width, height) -- Gimp.displays_flush() -- end -- -- local success = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.SUCCESS) -- retval:append(success) -- return retval --end -- --Goat:class('Exercise', Gimp.PlugIn) -- --function Goat.Exercise:do_query_procedures() -- return { 'plug-in-goat-exercise-lua' } --end -- --function Goat.Exercise:do_create_procedure(name) -- local procedure = Gimp.ImageProcedure.new(self, name, -- Gimp.PDBProcType.PLUGIN, -- run, nil) -- -- procedure:set_image_types("*"); -- procedure:set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE); -- -- procedure:set_menu_label("Exercise a Lua goat"); -- procedure:set_icon_name(GimpUi.ICON_GEGL); -- procedure:add_menu_path('/Filters/Development/Goat exercises/'); -- -- procedure:set_documentation("Exercise a goat in the Lua language", -- "Takes a goat for a walk in Lua", -- name); -- procedure:set_attribution("Jehan", "Jehan", "2019"); -- -- return procedure --end -- ---- 'arg' is a Lua table. When automatically converted to an array, the ---- value 0 is deleted (because Lua arrays start at 1!), which breaks ---- Gimp.main() call. So let's create our own array starting at 1. --argv = {} --for k, v in pairs(arg) do -- argv[k+1] = v --end -- --Gimp.main(GObject.Type.name(Goat.Exercise), argv) -diff -urNp a/extensions/goat-exercises/Makefile.am b/extensions/goat-exercises/Makefile.am ---- a/extensions/goat-exercises/Makefile.am 2022-03-09 09:39:44.007314944 +0100 -+++ b/extensions/goat-exercises/Makefile.am 2022-03-09 10:27:14.623108639 +0100 -@@ -72,10 +72,10 @@ endif - - # Lua (lua-jit + LGI) version. - --if BUILD_LUA --goat_exercise_luadir = $(goat_exercise_c_libexecdir) --goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua --endif -+#if BUILD_LUA -+#goat_exercise_luadir = $(goat_exercise_c_libexecdir) -+#goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua -+#endif - - # Python 3 (pygobject) version. - -@@ -135,7 +135,6 @@ org.gimp.extension.goat-exercises.metain - - EXTRA_DIST = \ - goat-exercise-gjs.js \ -- goat-exercise-lua.lua \ - goat-exercise-py3.py \ - $(appstream_in_files) - -diff -urNp a/extensions/goat-exercises/Makefile.in b/extensions/goat-exercises/Makefile.in ---- a/extensions/goat-exercises/Makefile.in 2022-03-09 09:39:44.006314936 +0100 -+++ b/extensions/goat-exercises/Makefile.in 2022-03-09 10:28:59.224986448 +0100 -@@ -118,7 +118,6 @@ CONFIG_CLEAN_VPATH_FILES = - am__installdirs = "$(DESTDIR)$(goat_exercise_c_libexecdir)" \ - "$(DESTDIR)$(goat_exercise_vala_libexecdir)" \ - "$(DESTDIR)$(goat_exercise_gjsdir)" \ -- "$(DESTDIR)$(goat_exercise_luadir)" \ - "$(DESTDIR)$(goat_exercise_py3dir)" "$(DESTDIR)$(appdatadir)" \ - "$(DESTDIR)$(goat_exercise_c_libexecdir)" \ - "$(DESTDIR)$(goat_exercise_vala_libexecdir)" -@@ -183,7 +182,7 @@ am__uninstall_files_from_dir = { \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } --SCRIPTS = $(goat_exercise_gjs_SCRIPTS) $(goat_exercise_lua_SCRIPTS) \ -+SCRIPTS = $(goat_exercise_gjs_SCRIPTS) \ - $(goat_exercise_py3_SCRIPTS) - AM_V_P = $(am__v_P_@AM_V@) - am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -@@ -753,8 +752,8 @@ goat_exercise_c_LDADD = \ - @BUILD_JAVASCRIPT_TRUE@goat_exercise_gjs_SCRIPTS = goat-exercise-gjs.js - - # Lua (lua-jit + LGI) version. --@BUILD_LUA_TRUE@goat_exercise_luadir = $(goat_exercise_c_libexecdir) --@BUILD_LUA_TRUE@goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua -+#@BUILD_LUA_TRUE@goat_exercise_luadir = $(goat_exercise_c_libexecdir) -+#@BUILD_LUA_TRUE@goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua - - # Python 3 (pygobject) version. - @BUILD_PYTHON_TRUE@goat_exercise_py3dir = $(goat_exercise_c_libexecdir) -@@ -795,7 +794,6 @@ appdatadir = $(goat_exercise_c_libexecdi - appdata_DATA = $(appstream_files) - EXTRA_DIST = \ - goat-exercise-gjs.js \ -- goat-exercise-lua.lua \ - goat-exercise-py3.py \ - $(appstream_in_files) - -@@ -977,41 +975,41 @@ uninstall-goat_exercise_gjsSCRIPTS: - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(goat_exercise_gjsdir)'; $(am__uninstall_files_from_dir) --install-goat_exercise_luaSCRIPTS: $(goat_exercise_lua_SCRIPTS) -- @$(NORMAL_INSTALL) -- @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || list=; \ -- if test -n "$$list"; then \ -- echo " $(MKDIR_P) '$(DESTDIR)$(goat_exercise_luadir)'"; \ -- $(MKDIR_P) "$(DESTDIR)$(goat_exercise_luadir)" || exit 1; \ -- fi; \ -- for p in $$list; do \ -- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -- if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ -- done | \ -- sed -e 'p;s,.*/,,;n' \ -- -e 'h;s|.*|.|' \ -- -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ -- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ -- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ -- if ($$2 == $$4) { files[d] = files[d] " " $$1; \ -- if (++n[d] == $(am__install_max)) { \ -- print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ -- else { print "f", d "/" $$4, $$1 } } \ -- END { for (d in files) print "f", d, files[d] }' | \ -- while read type dir files; do \ -- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ -- test -z "$$files" || { \ -- echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(goat_exercise_luadir)$$dir'"; \ -- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(goat_exercise_luadir)$$dir" || exit $$?; \ -- } \ -- ; done -- --uninstall-goat_exercise_luaSCRIPTS: -- @$(NORMAL_UNINSTALL) -- @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || exit 0; \ -- files=`for p in $$list; do echo "$$p"; done | \ -- sed -e 's,.*/,,;$(transform)'`; \ -- dir='$(DESTDIR)$(goat_exercise_luadir)'; $(am__uninstall_files_from_dir) -+#install-goat_exercise_luaSCRIPTS: $(goat_exercise_lua_SCRIPTS) -+# @$(NORMAL_INSTALL) -+# @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || list=; \ -+# if test -n "$$list"; then \ -+# echo " $(MKDIR_P) '$(DESTDIR)$(goat_exercise_luadir)'"; \ -+# $(MKDIR_P) "$(DESTDIR)$(goat_exercise_luadir)" || exit 1; \ -+# fi; \ -+# for p in $$list; do \ -+# if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -+# if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ -+# done | \ -+# sed -e 'p;s,.*/,,;n' \ -+# -e 'h;s|.*|.|' \ -+# -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ -+# $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ -+# { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ -+# if ($$2 == $$4) { files[d] = files[d] " " $$1; \ -+# if (++n[d] == $(am__install_max)) { \ -+# print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ -+# else { print "f", d "/" $$4, $$1 } } \ -+# END { for (d in files) print "f", d, files[d] }' | \ -+# while read type dir files; do \ -+# if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ -+# test -z "$$files" || { \ -+# echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(goat_exercise_luadir)$$dir'"; \ -+# $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(goat_exercise_luadir)$$dir" || exit $$?; \ -+# } \ -+# ; done -+ -+#uninstall-goat_exercise_luaSCRIPTS: -+# @$(NORMAL_UNINSTALL) -+# @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || exit 0; \ -+# files=`for p in $$list; do echo "$$p"; done | \ -+# sed -e 's,.*/,,;$(transform)'`; \ -+# dir='$(DESTDIR)$(goat_exercise_luadir)'; $(am__uninstall_files_from_dir) - install-goat_exercise_py3SCRIPTS: $(goat_exercise_py3_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(goat_exercise_py3_SCRIPTS)'; test -n "$(goat_exercise_py3dir)" || list=; \ -@@ -1266,7 +1264,7 @@ check-am: all-am - check: check-am - all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) - installdirs: -- for dir in "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)" "$(DESTDIR)$(goat_exercise_gjsdir)" "$(DESTDIR)$(goat_exercise_luadir)" "$(DESTDIR)$(goat_exercise_py3dir)" "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)"; do \ -+ for dir in "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)" "$(DESTDIR)$(goat_exercise_gjsdir)" "$(DESTDIR)$(goat_exercise_py3dir)" "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done - install: install-am -@@ -1330,7 +1328,6 @@ info: info-am - info-am: - - install-data-am: install-appdataDATA install-goat_exercise_gjsSCRIPTS \ -- install-goat_exercise_luaSCRIPTS \ - install-goat_exercise_py3SCRIPTS - - install-dvi: install-dvi-am -@@ -1385,7 +1382,6 @@ uninstall-am: uninstall-appdataDATA \ - uninstall-goat_exercise_c_libexecDATA \ - uninstall-goat_exercise_c_libexecPROGRAMS \ - uninstall-goat_exercise_gjsSCRIPTS \ -- uninstall-goat_exercise_luaSCRIPTS \ - uninstall-goat_exercise_py3SCRIPTS \ - uninstall-goat_exercise_vala_libexecDATA \ - uninstall-goat_exercise_vala_libexecPROGRAMS -@@ -1403,7 +1399,6 @@ uninstall-am: uninstall-appdataDATA \ - install-goat_exercise_c_libexecDATA \ - install-goat_exercise_c_libexecPROGRAMS \ - install-goat_exercise_gjsSCRIPTS \ -- install-goat_exercise_luaSCRIPTS \ - install-goat_exercise_py3SCRIPTS \ - install-goat_exercise_vala_libexecDATA \ - install-goat_exercise_vala_libexecPROGRAMS install-html \ -@@ -1416,7 +1411,6 @@ uninstall-am: uninstall-appdataDATA \ - uninstall-appdataDATA uninstall-goat_exercise_c_libexecDATA \ - uninstall-goat_exercise_c_libexecPROGRAMS \ - uninstall-goat_exercise_gjsSCRIPTS \ -- uninstall-goat_exercise_luaSCRIPTS \ - uninstall-goat_exercise_py3SCRIPTS \ - uninstall-goat_exercise_vala_libexecDATA \ - uninstall-goat_exercise_vala_libexecPROGRAMS diff --git a/SPECS/gimp.spec b/SPECS/gimp.spec index 704872c..1d35f31 100644 --- a/SPECS/gimp.spec +++ b/SPECS/gimp.spec @@ -1,19 +1,15 @@ -# Set this to 0 in stable, 1 in (SONAME-wise) unstable releases -%global unstable 0 - #### options: # Use the following --with/--without