diff --git a/devel/lua-lgi/Makefile b/devel/lua-lgi/Makefile index 19c4d4c54be2..77abf74e3051 100644 --- a/devel/lua-lgi/Makefile +++ b/devel/lua-lgi/Makefile @@ -1,40 +1,40 @@ PORTNAME= lgi PORTVERSION= 0.9.2 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= devel PKGNAMEPREFIX= ${LUA_PKGNAMEPREFIX} PATCH_SITES= https://github.com/lgi-devs/lgi/commit/ PATCHFILES= 5cfd42c386d3adae6d211fbb4011179c3c141b04.diff:-p1 MAINTAINER= andrew@tao11.riddles.org.uk COMMENT= Lua bindings to libraries using GObject-Introspection WWW= https://github.com/pavouk/lgi LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE LIB_DEPENDS+= libffi.so:devel/libffi USES= gmake gnome lua:-54,module pkgconfig USE_GITHUB= yes GH_ACCOUNT= pavouk USE_GNOME= introspection:build,run MAKE_ARGS= PREFIX="${PREFIX}" LUA_LIBDIR="${LUA_MODLIBDIR}" \ LUA_INCDIR="${LUA_INCDIR}" LUA_VERSION="${LUA_VER}" \ CORE="corelgilua${LUA_VER_STR}.so" LUA="${LUA_CMD}" MAKE_ENV= LUA_CFLAGS="-I${LUA_INCDIR}" TEST_TARGET= check post-patch: @${REINPLACE_CMD} -e 's/51/${LUA_VER_STR}/g' \ ${WRKSRC}/lgi/core.c \ ${WRKSRC}/lgi/core.lua post-install: @${STRIP_CMD} ${STAGEDIR}${LUA_MODLIBDIR}/lgi/*.so .include diff --git a/devel/lua-lgi/files/patch-lua-lgi-glib_fix b/devel/lua-lgi/files/patch-lua-lgi-glib_fix new file mode 100644 index 000000000000..122d5010d062 --- /dev/null +++ b/devel/lua-lgi/files/patch-lua-lgi-glib_fix @@ -0,0 +1,68 @@ +Minimal port of lua-lgi fix for new Glib +https://github.com/lgi-devs/lgi/pull/361 + +diff --git lgi/ffi.lua.orig lgi/ffi.lua +index b382a97e..26f31883 100644 +--- lgi/ffi.lua.orig ++++ lgi/ffi.lua +@@ -75,18 +75,33 @@ 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 ++ if GLib.check_version(2, 87, 0) then ++ 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 ++ else ++ for _, val in ipairs(enum_class.values) do ++ enum_component[core.upcase(val.value_nick):gsub('%-', '_')] = val.value ++ end ++ end ++ -- 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 +- type_class:unref() + return enum_component + end + +diff --git tests/pango.lua.orig tests/pango.lua +index e20a6799..48e7e21a 100644 +--- tests/pango.lua.orig ++++ tests/pango.lua +@@ -35,8 +35,14 @@ 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 ++ if Pango.version_check(1, 56, 2) then ++ pgs = Pango.GlyphString() ++ Pango.shape(string.sub(s,1+offset), length, analysis, pgs) ++ else ++ pgs = Pango.shape(string.sub(s,1+offset), length, analysis) ++ end ++ + -- Pull out individual glyphs with pgs.glyphs + local glyphs = pgs.glyphs + check(type(glyphs) == 'table')