summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2026-03-06 08:28:41 +0100
committerAndreas Enge <andreas@enge.fr>2026-03-06 14:53:49 +0100
commitf8b6103ed42213e16b190d0afce3d69f8084ac46 (patch)
treef82509a5c116e76ad620fb556d70e12fafbbd704 /gnu/packages
parenta6b738cc4b741fd3a5710dfe48aaff9f305148a8 (diff)
gnu: lua-lgi: Fix build.
* gnu/packages/patches/lua-lgi-fix-pango.patch: New file. * gnu/packages/patches/lua-lgi-fix-ref.patch: New file. * gnu/local.mk (dist_patch_DATA): Register them here. * gnu/packages/lua.scm (make-lua-lgi)[patches]: Add them here.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/lua.scm2
-rw-r--r--gnu/packages/patches/lua-lgi-fix-pango.patch19
-rw-r--r--gnu/packages/patches/lua-lgi-fix-ref.patch44
3 files changed, 65 insertions, 0 deletions
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 40797805891..6a09a838140 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -982,6 +982,8 @@ describing the commented declarations and functions.")
(url "https://github.com/pavouk/lgi")
(commit version)))
(file-name (git-file-name name version))
+ (patches (search-patches "lua-lgi-fix-ref.patch"
+ "lua-lgi-fix-pango.patch"))
(sha256
(base32 "03rbydnj411xpjvwsyvhwy4plm96481d7jax544mvk7apd8sd5jj"))))
(build-system gnu-build-system)
diff --git a/gnu/packages/patches/lua-lgi-fix-pango.patch b/gnu/packages/patches/lua-lgi-fix-pango.patch
new file mode 100644
index 00000000000..d8ffe00eb0f
--- /dev/null
+++ b/gnu/packages/patches/lua-lgi-fix-pango.patch
@@ -0,0 +1,19 @@
+Upstream-Status: https://github.com/lgi-devs/lgi/pull/342
+---
+ tests/pango.lua | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/tests/pango.lua b/tests/pango.lua
+index e20a6799..ea00b903 100644
+--- a/tests/pango.lua
++++ b/tests/pango.lua
+@@ -35,7 +35,6 @@ function pango.glyphstring()
+ local offset = items[i].offset
+ local length = items[i].length
+ local analysis = items[i].analysis
+- local pgs = Pango.GlyphString()
+- Pango.shape(string.sub(s,1+offset), length, analysis, pgs)
++ local pgs = Pango.shape(string.sub(s,1+offset), length, analysis)
+ -- Pull out individual glyphs with pgs.glyphs
+ local glyphs = pgs.glyphs
+ check(type(glyphs) == 'table') \ No newline at end of file
diff --git a/gnu/packages/patches/lua-lgi-fix-ref.patch b/gnu/packages/patches/lua-lgi-fix-ref.patch
new file mode 100644
index 00000000000..23814c7d06a
--- /dev/null
+++ b/gnu/packages/patches/lua-lgi-fix-ref.patch
@@ -0,0 +1,44 @@
+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.
+
+Upstream-Status: known issue <https://github.com/lgi-devs/lgi/issues/346>
+---
+ LuaGObject/ffi.lua | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/LuaGObject/ffi.lua b/LuaGObject/ffi.lua
+index 799f68e5..0695b0be 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
+ \ No newline at end of file