Re: libseed-list gobject-introspection-1.30.0
- From: Chris Vine <chris cvine freeserve co uk>
- To: "Alan Knowles" <alan akbkhome com>
- Cc: libseed-list gnome org, Chris Vine <libseed-list-bounces gnome org>
- Subject: Re: libseed-list gobject-introspection-1.30.0
- Date: Mon, 3 Oct 2011 11:20:10 +0100
On Mon, 03 Oct 2011 11:23:41 +0800
"Alan Knowles" <alan akbkhome com> wrote:
> Introspection is a bit of a nightmare sometimes...
>
> The 'ideal' solution is to find the definition in the .c file, and
> fix the definition there, then report it as a bug.. and wait for
> upstream to fix it.
You email is helpful and does at least identify the problem, although
having looked at it I think it is a deliberate introspection API break
on the part of the glib and gobject-introspection developers rather
than a bug, in order to allow gjs to throw around utf8 byte arrays more
easily. The gjs-1.30 binding for Gio.DateInputStream.read_line() now
provides a utf8 (guint8) array to provide text input as compared with
the standard javascript String object which gjs-0.7 provided, which
will no doubt have broken a number of gjs scripts people might have
written.
The annotation for the return value of g_data_input_stream_read_line()
in gdatainputstream.c has changed from (for glib-2.28):
Returns: transfer null:
to (from glib-2.30):
Returns: transfer null: (array zero-terminated=1) (element-type
guint8)
The Gio-2.0.gir file for glib-2.28/gobject-introspection-0.10 has:
<return-value transfer-ownership="full">
<doc xml:whitespace="preserve">a string with the line that
was read in</doc> <type name="utf8" c:type="char*"/>
</return-value>
The Gio-2.0.gir file for glib-2.30/gobject-introspection-1.30 has:
<return-value transfer-ownership="full">
<doc xml:whitespace="preserve">a</doc>
<array c:type="char*">
<type name="guint8"/>
</array>
</return-value>
Presumably this is what has broken seed.
> The more realistic workaround is to
> a) find the bad .gir file,
> b) fix the definition in there
> c) use g-ir-compile to re-create the .typelib file
>
> Since some of my code is on my critical workflow, I've had to make a
> copy of all the relivant gir's here.
> https://github.com/roojs/gir-1.2-gtk-3.0
>
> These have been slightly fixed to solve a few common bugs in glib /
> gtk etc.
>
> I then use this small script to generate typelibs from them
> https://github.com/roojs/gitlive/blob/master/install1.2.sh
>
> Then add this at the start of the application - to modify the search
> path.
>
> GI = imports.gi.GIRepository;
> GLib = imports.gi.GLib;
> GI.Repository.prepend_search_path(GLib.get_home_dir() +
> '/.Builder/girepository-1.2');
>
> Note: if you modify Glib, you will probably have to replace your
> system glib-2.0.typelib,
>
> Regards
> Alan
I have a copy of the old glib-2.28/gobject-introspection-0.10 bindings
on another machine so I will probably copy them across pending seed
catching up. It looks as if seed is being treated as something of a
second citizen here with this kind of arbitrary breakage, but no doubt
that is the result of gjs having been adopted for gnome-shell.
Chris
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]