Entries in the GI_TYPELIB_PATH environment variable are added to the
global search path in reverse order - instead, add entries in the
same order in which they are specified.
Take a GError * for typelib loading code, validate the header. This
fixes bizarre errors from gjs where g_irepository_require would happily
load old typelibs.
Previously we had both e.g. GI_TYPE_TAG_LONG and GI_TYPE_TAG_INT64,
but in fact the typelib is already machine-specific, so it makes sense
to just encode this as a fixed type. The .gir remains abstract.
We also remove size_t from the typelib; one would never want to treat
it differently than an integer.
time_t is removed as well; while bindings like gjs had special handling
to turn it into e.g. a JS Date object, I don't think we should encourage
people to use these POSIX types in their API. Use GTimeVal or the like
instead.
Because the typelib is now really machine-specific, we need to remove
the -expected.tgirs from git. (We could potentially add a check
which wasn't just a literal diff later)
https://bugzilla.gnome.org/show_bug.cgi?id=623774
Use g_slice to allocate instead of g_new(x, 1); It uses a memory
pool internally and should be faster, especially for GBaseInfo/GRealInfo,
structs which are tiny.
It's was busted that g_typelib_new_* does the dlopen() since that caused
g-ir-compiler to load the modules even though it wasn't going to do
anything with them.
Instead, change things so that g_module_symbol does the dlopen on-demand.
Remove the extra dlopen(NULL) inside girepository.c, we had another
already in gtypelib.c.
Thanks to Owen Taylor for suggesting this approach.
Add type tags for short and ushort, plus all of the requisite code needed
to utilize them in libgirepository.
Add support in the scanner's AST files.
Add test functions to the everything library and the expected gir file.
gtypelib.c constant validation fixed by Colin Walters <walters@verbum.org>
Parse the c:prefix from the .gir, include it in the header. Armed with this
information, we can now optimize lookups of GTypes because we
have the requirement that GTypes must start with the c:prefix. We do
fall back though if a lookup fails.
We want the environment variable to override so that people can
easily write scripts that run their programs uninstalled.
svn path=/trunk/; revision=1024
The intended use of g_irepository_get_option_group is that your
application more transparently supports --introspection-dump; we
should exit so that your app doesn't continue trying to launch.
svn path=/trunk/; revision=1023
2008-12-10 Johan Bilien <jobi@via.ecp.fr>
Bug 563998 – Cache the GIBaseInfo for GTypes
* girepository/girepository.c (g_irepository_find_by_gtype):
add a cache of GType -> GIBaseInfo.
svn path=/trunk/; revision=991
This change makes us stop calling g_irepository_get_default inside ginfo.c,
which won't work for non-default repositories.
Change GIBaseInfo to not only keep track of its source repository,
we hold a reference. This makes memmgt much clearer.
svn path=/trunk/; revision=970
2008-11-12 Johan Dahlin <jdahlin@async.com.br>
* girepository/girepository.c:
Change the element type from utf8 to filename
* girepository/girnode.c (g_ir_node_build_typelib):
Special case filename equally to utf8 here.
svn path=/trunk/; revision=895
2008-11-12 Johan Dahlin <jdahlin@async.com.br>
* girepository/girepository.c (g_irepository_get_search_path):
* girepository/girepository.h:
Add a g_irepository_get_search_path, so we can access the search
paths from runtime.
svn path=/trunk/; revision=893
2008-10-23 Johan Bilien <jobi@via.ecp.fr>
Bug 557468 – Support for GI_TYPELIB_PATH
* girepository/girepository.c: if the GI_TYPELIB_PATH is set, add the
provided paths to the global search path.
svn path=/trunk/; revision=786
* girepository/gtypelib.h (BLOB_IS_REGISTERED_TYPE): added
* girepository/girepository.c (find_interface): Fix
find_by_gtype case to get the type name from right offset
svn path=/trunk/; revision=686
This is a big patch. You should probably remove your installation
tree to be cleaner.
* docs/typelib-format.txt: Add nsversion entry which holds
version of namespace.
* girepository/girepository.h: Add 'version' parameter to
g_irepository_require. This may be NULL. Normally
bindings should pass an explicit version though.
* girepository/girepository.c: Lots of infrastructure to
support versioning. Add some more documentation. Disallow
some usage of NULL namespaces.
* girepository/girmodule.c: Add version parameter.
* girepository/gtypelib.c: Update header size.
* giscanner/ast.py: Add version to Namespace.
* giscanner/girparser.py: Parse version attribute from
XML, pass to Namespace.
* giscanner/girwriter.py: Write out version parameter.
* giscanner/transformer.py: Clean up include registration.
* tests/*: Add version attribute.
* tests/invoke/invoke.c: Don't try looking up test before
it's loaded in repository.
* tools/generate.c: Output version parameter.
* gir/Makefile.am: Add 2.0 version to .gir files.
svn path=/trunk/; revision=677
2008-10-09 Lucas Rocha <lucasr@gnome.org>
* girepository/girepository.c (register_internal): fix regression on
invoke test case by making sure we load the global module in the
typelib when dealing with inline typelibs.
* girepository/gtypelib.c: a couple of coding style fixes.
svn path=/trunk/; revision=661
2008-10-06 Lucas Rocha <lucasr@gnome.org>
Bug 555294: Add support for multiple shared libraries per typelib.
* girepository/ginvoke.c (g_function_info_invoke),
girepository/ginfo.c(g_registered_type_info_get_g_type): use
g_typelib_symbol instead of g_module_symbol.
* girepository/girepository.h: remove g_typelib_set_module and add
g_typelib_symbol.
* girepository/gtypelib.[ch] (find_some_symbol, _g_typelib_init,
g_typelib_new_from_memory, g_typelib_new_from_const_memory,
g_typelib_free, g_typelib_symbol): chnage GTypeLib to hold a list of
modules instead of just one. The symbol lookup is now abstracted
behind g_typelib_symbol which tries to find the passed symbol name in
one of its modules.
* giscanner/girwriter.py, tools/g-ir-scanner: change scanner to read
and write shared_library attribute as a comma-separated list of libs.
svn path=/trunk/; revision=660
* gir/Makefile.am: Dep on Makefile
* girepository/ginfo.c: Print out a nicer error
message if we failed to load something.
* girepository/girepository.c: Clean up
default typelib handling; remove global
default_typelib variable. Ensure we handle
NULL repository in more places.
Support dependency resolution.
* tests/Makefile.am: Kill off gobject.gir,
it conflicts with the real one.
* tests/Object.gir: Depend on GObject.
* tools/generate.c: Take --includedir
argument to say which directories to search
for typelibs. Print out dependencies.
svn path=/trunk/; revision=541
2008-08-26 Colin Walters <walters@verbum.org>
* girepository/girepository.c: Search
$DATADIR/girepository instead of
$DATADIR/gitypelibs; this naming makes
it clearer that e.g. jgir can install
.jars there.
* gir/Makefile.am: Install there.
svn path=/trunk/; revision=502
2008-08-24 Colin Walters <walters@verbum.org>
* girepository/girepository.c (g_irepository_require):
Don't open shared library here; we already do it
in gtypelib.c.
svn path=/trunk/; revision=483
2008-08-21 Johan Dahlin <johan@gnome.org>
* girepository/girepository.c (g_irepository_require):
Plug memory leak and avoid using freed memory.
Resolve the whole module path, here as well.
svn path=/trunk/; revision=441
2008-08-21 Colin Walters <walters@verbum.org>
* girepository/girparser.c (g_irepository_require):
Fix one small leak in error case.
svn path=/trunk/; revision=434
2008-08-21 Johan Dahlin <johan@gnome.org>
* girepository/girepository.c (g_irepository_require):
Rewrap and fix double free bug by leaking a bit.
svn path=/trunk/; revision=430
2008-08-20 Colin Walters <walters@verbum.org>
* girepository/girepository.c: Add new function
g_irepository_get_typelib_path which tells
us from where we loaded a namespace.
svn path=/trunk/; revision=429
2008-08-20 Colin Walters <walters@verbum.org>
* girepository/girepository.c: Remove
g_irepository_register_file in favor of
g_irepository_require. There are two
possible deployment scenarios for typelibs:
First, separate in $DATADIR/gitypelibs/. Second,
they may be embedded in shlibs. However since
the first is now the normal case, the API is
optimized around it.
Refactor internals to look up typelibs for
namespaces just-in-time, but we expect
consumers to call g_irepository_require.
Also, add some docs. No one has died from that
before.
* gir/Makefile.am: Need --library for glib.
* giscanner/girwriter.py: Write out shared-library.
* tools/g-ir-writer: Take the first --library
argument as the target of shared-library. In
the future we should make this nicer with pkg-config
probably.
svn path=/trunk/; revision=426
2008-08-20 Colin Walters <walters@verbum.org>
* gir/Makefile.am: Rename .gir files using GI namespace.
* girepository/girepository.c: Use XDG_DATA_DIRS for
looking up typelibs. Also typelibs are now suffixed
with .typelib.
* tests/invoke/Makefile.am: Only use metadata.
* girepository/Makefile.am: Remove unnecessary include.
* tests/scanner/Makefile.am: Update using GI namespaces
for scanner includes.
svn path=/trunk/; revision=422
2008-07-24 Colin Walters <walters@verbum.org>
* girepository/girepository.c (g_irepository_register): Add
environment variable G_IREPOSITORY_VERBOSE so we can print
out what we're doing.
* girepository/girepository.c (g_irepository_register_file):
Add GError error message to g_debug call.
svn path=/trunk/; revision=296