pekim / gobbi

gobbi is a set of generated Go bindings for gtk et al.
MIT License
28 stars 3 forks source link

Incompatible with gobject 2.62.4 #16

Open ddevault opened 4 years ago

ddevault commented 4 years ago
lib/glib/v-.go:308:46: could not determine kind of name for C.G_KEY_FILE_DESKTOP_KEY_FULLNAME
lib/glib/v-.go:309:52: could not determine kind of name for C.G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN
lib/glib/v-.go:310:46: could not determine kind of name for C.G_KEY_FILE_DESKTOP_KEY_KEYWORDS
pekim commented 4 years ago

Strangely I can see those constants are defined in glib-2.0/glib/gkeyfile.h. I have glib 2.56.4.

However I cannot find any documentation for the constants. So I have blacklisted them from the generation. https://github.com/pekim/gobbi/commit/33e954cd8649653cccf0e96f231774bbac1354b0

Can you give branch 16-glib-constants a try please?

ddevault commented 4 years ago

This gets me a bit further:

# github.com/pekim/gobbi/lib/atk
/usr/bin/ld: $WORK/b036/_x005.o: undefined reference to symbol 'g_object_ref_sink'
/usr/bin/ld: /usr/lib//libgobject-2.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
# github.com/pekim/gobbi/lib/gio
lib/gio/v-.go:1194:44: undefined: Converter
lib/gio/v-.go:1199:43: undefined: Initable
lib/gio/v-.go:1263:66: undefined: Converter
lib/gio/v-.go:1282:58: undefined: PollableInputStream
lib/gio/v-.go:1346:68: undefined: Converter
lib/gio/v-.go:1365:60: undefined: PollableOutputStream
lib/gio/v-.go:1463:41: undefined: MenuModel
lib/gio/v-.go:4599:55: undefined: PollableInputStream
lib/gio/v-.go:4681:57: undefined: PollableOutputStream
lib/gio/v-.go:6447:51: undefined: ProxyResolver
lib/gio/v-.go:6447:51: too many errors
pekim commented 4 years ago

What go build/run command are you running when this happens?

Does the example in the readme work?

pekim commented 4 years ago

lib/gobject/package.go contains

// #cgo pkg-config: gobject-2.0
import "C"

Which should result in use of pkg-config --libs gobject-2.0 by go build so that it includes the necessary linker flags for the library. So I'm not sure why the g_object_ref_sink symbol is not found.

I'm quite puzzled by DSO missing from command line.

ddevault commented 4 years ago

I was trying gtk_application, but the command you gave doesn't work either.

pekim commented 4 years ago

I've got a handle on this now.

A function (for example g_converter_output_stream_new) has no version information in the gir file. However it has a parameter with a type (in this case GConverter, introduced in gio 2.24) that does have version information.

I'm generating the function as though it's available in all versions of gio. But it's implicitly new in 2.24. So unless you're targetting gio 2.24 or later (using a build tag of gio_2.24 or later) the build is going to fail.

I'll look in to fixing the generation code to take this in to account.

ddevault commented 4 years ago

Thanks, let me know and I'll give it a shot when the time comes.