From ad2409b5c21265061abc81db7426e264490a0674cba970b0fe1741f745f07101 Mon Sep 17 00:00:00 2001 From: Paulo Gomes Date: Wed, 8 Oct 2025 12:44:33 +0100 Subject: [PATCH] Fix glib 2.86 regression Signed-off-by: Paulo Gomes --- 001-Fix-GLib-2.86-regression.patch | 53 ++++++++++++++++++++++++++++++ lua-lgi.changes | 7 ++++ lua-lgi.spec | 8 ++++- 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 001-Fix-GLib-2.86-regression.patch diff --git a/001-Fix-GLib-2.86-regression.patch b/001-Fix-GLib-2.86-regression.patch new file mode 100644 index 0000000..8854735 --- /dev/null +++ b/001-Fix-GLib-2.86-regression.patch @@ -0,0 +1,53 @@ +From 54d90bfd38c4562ddd619f1f2e14130fc68ec702 Mon Sep 17 00:00:00 2001 +From: Victoria Lacroix +Date: Mon, 22 Sep 2025 10:02:10 -0400 +Subject: [PATCH] Fix GLib 2.86 regression +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GLib 2.86 removed the GObject.TypeClass.ref() function, replacing it +with GObject.TypeClass.get()—this commit makes it so .get() is used in +GLib >= 2.86, while still preserving the old behaviour on GLib < 2.86. +--- + lgi/ffi.lua | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/lgi/ffi.lua b/lgi/ffi.lua +index 799f68e..0695b0b 100644 +--- a/lgi/ffi.lua ++++ b/lgi/ffi.lua +@@ -76,18 +76,27 @@ end + + -- Creates new enum/flags table with all values from specified gtype. + function ffi.load_enum(gtype, name) +- local GObject = core.repo.GObject ++ local GLib, GObject = core.repo.GLib, core.repo.GObject + local is_flags = GObject.Type.is_a(gtype, GObject.Type.FLAGS) + local enum_component = component.create( + gtype, is_flags and enum.bitflags_mt or enum.enum_mt, name) +- local type_class = GObject.TypeClass.ref(gtype) ++ local type_class ++ -- GLib >= 2.86 deprecates GObject.TypeClass.ref() in favour of .get() ++ if GLib.check_version(2, 86, 0) then ++ type_class = GObject.TypeClass.ref(gtype) ++ else ++ type_class = GObject.TypeClass.get(gtype) ++ end + local enum_class = core.record.cast( + type_class, is_flags and GObject.FlagsClass or GObject.EnumClass) + for i = 0, enum_class.n_values - 1 do + local val = core.record.fromarray(enum_class.values, i) + enum_component[core.upcase(val.value_nick):gsub('%-', '_')] = val.value + end +- type_class:unref() ++ -- For GLib versions below 2.86, type_class was ref'd and needs to be unref'd ++ if GLib.check_version(2, 86, 0) then ++ type_class:unref() ++ end + return enum_component + end + +-- +2.47.1 + diff --git a/lua-lgi.changes b/lua-lgi.changes index 7297364..96c02fd 100644 --- a/lua-lgi.changes +++ b/lua-lgi.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Oct 8 10:13:32 UTC 2025 - Paulo Gomes + +- Add Lua54 headers to build lua-lgi:luajit. +- Fix GLib 2.86 regression (boo#1250526) + Refer to https://github.com/lgi-devs/lgi/issues/346 + ------------------------------------------------------------------- Wed Jan 25 11:52:07 UTC 2023 - Michal Suchanek diff --git a/lua-lgi.spec b/lua-lgi.spec index bcff08f..ed31835 100644 --- a/lua-lgi.spec +++ b/lua-lgi.spec @@ -26,13 +26,19 @@ License: MIT Group: Development/Languages/Other URL: https://github.com/pavouk/lgi Source0: https://github.com/pavouk/%{mod_name}/archive/%{version}.tar.gz#/%{mod_name}-%{version}.tar.gz -Patch: lua54.patch +Patch0: lua54.patch +# PATCH-FIX-UPSTREAM 001-Fix-GLib-2.86-regression.patch boo#1250526 +Patch1: 001-Fix-GLib-2.86-regression.patch BuildRequires: lua-macros BuildRequires: %{flavor}-devel BuildRequires: pkgconfig BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.10.8 BuildRequires: pkgconfig(libffi) +%if "%{flavor}" == "luajit" +BuildRequires: lua54-devel +%define LUANAME luajit-2.0 +%endif Requires: %{flavor} %lua_provides %if "%{flavor}" == "" -- 2.49.0